gpt4 book ai didi

hibernate - 如何以编程方式检索持久性单元使用的数据源

转载 作者:行者123 更新时间:2023-12-02 19:08:00 25 4
gpt4 key购买 nike

...没有实际读取和解析 persistence.xml

我可以使用 properties of it's factory 检索 EntityManager 的持久性单元的名称。我可以使用 jboss-as-controller-client 检索可用的数据源。但我发现没有 API 可以为我提供特定 EntityManager 的数据源。

带有名称的String就足够了。

谢谢

我正在 JBoss 7.1.1.Final 上通过 JPA 2 使用 Hibernate 4.0.1.Final。

编辑:如果可能的话,我希望避免从 JPA 转向 Hibernate API。

编辑:奥古斯托的解决方案有效,我对细节有一些注释:由于 ClassCastException:(org.jboss.as.jpa.container,EM 的转换不起作用.TransactionScopedEntityManager 无法转换为 org.hibernate.ejb.EntityManagerImpl),但它适用于检索到的工厂。所以我省略了步骤1。

我也找不到从实例中检索数据源名称的方法。所以我不得不满足于目录名称:connectionProvider.getConnection().getCatalog();

最佳答案

您需要:

  1. EntityManager 转换为 EntityManagerImpl(Hibernate 实现)
  2. 调用getFactory()
  3. EntityManagerFactory 转换为 HibernateEntityManagerFactory
  4. 调用 getSessionFactory() 并将其转换为 SessionFactoryImpl
  5. 调用getConnectionProvider()并将其转换为正确的实现。您可以看到实现here 。我假设它是一个 DatasourceConnectionProvider
  6. 调用 getDataSource() 即可完成。

不幸的是,您必须使用 Hibernate API,因为无法使用 JPA API 检索数据源。

关于hibernate - 如何以编程方式检索持久性单元使用的数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12423930/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com