【发布时间】: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