【问题标题】:determine location of persistence.xml确定 persistence.xml 的位置
【发布时间】:2011-12-19 08:07:02
【问题描述】:

我正在尝试在桌面应用程序中使用 jpa。我不断收到错误No Persistence provider for EntityManager named <unit>,我怀疑我的 persistence.xml 无法找到。

我已经把它放在<project>/src/META-INF/persistence.xml

感觉jpa找不到这个文件,但是不知道怎么解决。

如何指定persistence.xml 文件的存储位置以及如何检查它是否被实际读取?

堆栈跟踪:

javax.persistence.PersistenceException: No Persistence provider for EntityManager named myunit
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:69)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)
    at myapplication.MyEntity.testAddEntity(HistoryAction.java:85)

【问题讨论】:

  • 您使用哪个 JPA 持久性提供程序? persistence.xml 文件的内容是什么,异常的堆栈跟踪是什么?
  • @JB Nizet:堆栈跟踪仅显示上述消息。但即使我在 .xml 文件中放入非法字符,我也不会收到(其他)错误消息。所以我真的很想知道应用程序是否找到并读取了我的 persistence.xml 文件。
  • 完整的堆栈跟踪将有助于诊断。但如果你不想被帮助,你可以不回答。您确定带有 persistence.xml 的 META-INF 文件夹在类路径中吗?
  • 我认为问题在于您的应用程序没有找到 jpa 实现(hibernate、eclipselink)而不是文件 persistence.xml。将术语 No Persistence provider for EntityManager 放入 SO 搜索框中。类似的问题还有很多。
  • 除上述内容外,“/src/META-INF/persistence.xml”与 CLASSPATH 中的内容无关。您对应用程序的调用定义了 CLASSPATH 中的内容,并且“/META-INF/persistence.xml”是它在运行时查找它的唯一位置。根据 JPA 规范!

标签: java eclipse jpa persistence hsqldb


【解决方案1】:

如果 JPA 找不到正确的 jpa 实现(例如 hibernate、eclipselink),您会收到此错误。

确保在包含您正在使用的 JPA 实现的构建路径中包含正确的 .jar。

(Matt Handy 在评论中给出的答案)

【讨论】:

    【解决方案2】:

    我认为问题在于您的应用程序没有找到 jpa 实现(hibernate、eclipselink)而不是文件 persistence.xml

    查看this related question 和答案。

    【讨论】:

      猜你喜欢
      • 2012-01-06
      • 1970-01-01
      • 2015-04-18
      • 2011-09-09
      • 2011-02-09
      • 1970-01-01
      • 2011-03-21
      • 2012-01-16
      • 1970-01-01
      相关资源
      最近更新 更多