【问题标题】:Hibernate and EclipseLink ProvidersHibernate 和 EclipseLink 提供程序
【发布时间】:2012-01-25 13:38:40
【问题描述】:

我的项目中正在运行 Hibernate,我正在尝试将其设置为可切换到 EclipseLink。我已经在 Maven 中添加了所有 EclipseLink 类,但它们似乎根本没有运行。当我尝试运行该项目时,结果是:

Exception in thread "main" javax.persistence.PersistenceException: 
    No Persistence provider for EntityManager named test

我的 persistence.xml 文件:https://gist.github.com/1676280

具有依赖关系的 pom.xml 文件:https://gist.github.com/1676282

将persistence.xml 中的提供程序切换回Hibernate 后,一切正常。

【问题讨论】:

  • 我认为切换 JPA 实现不是一件容易的事。

标签: java hibernate maven eclipselink


【解决方案1】:

我在您的 persistence.xml 中发现了一个重大问题和几个小问题。

最大的问题是您的持久性单元被命名为“org.knyttl”,但错误消息显示找不到持久性单元“test”。如果您正在寻找“测试”并且 pu 是“org.knyttl”,那么您将找不到任何东西。 :)

小问题是您有几个 EclipseLink 属性名称错误。 “javax.persistence.target-database”应该是“eclipselink.target-database”,“javax.persistence.logging.level”应该是“eclipselink.logging.level”。

肖恩

【讨论】:

  • 发布问题时,“test”和“org.knyttl”只是一个错字。不幸的是,小问题并没有解决问题。
  • 如果您在 persistence.xml 和调用 createEntityManagerFactory() 中的持久性单元名称匹配,那么我敢打赌 EclipseLink 不在您的类路径中。要调试它,您可以单步执行 Persistence.createEntityManagerFactory 代码并观察它寻找 JPA 提供者。它通过尝试加载类路径上的所有 META-INF/services/javax.persistence.spi.PersistenceProvider 文件来定位它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
  • 2011-09-01
  • 2016-11-04
相关资源
最近更新 更多