2011-11-01 37 views
3

我正在尝试在桌面应用程序中使用jpa。我不断收到错误No Persistence provider for EntityManager named <unit>,我怀疑我的persistence.xml找不到。确定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) 
+1

您使用哪种JPA持久性提供程序?什么是persistence.xml文件的内容以及异常的堆栈跟踪是什么? –

+0

@JB Nizet:stacktrace只说上面的消息。但即使我在我的.xml文件中输入了非法字符,我也没有收到(其他)错误信息。所以我真的很想知道应用程序是否查找并读取我的persistence.xml文件。 – Roalt

+0

完整的堆栈跟踪将有助于诊断。但如果你不想得到帮助,你可以自由地不回答。您确定具有persistence.xml的META-INF文件夹位于类路径中吗? –

回答

3

我认为这个问题是比较您的应用程序不会找到比文件的persistence.xml JPA实现(休眠,的EclipseLink)。

请参阅this related question和答案。

+0

我给你接受答案的当之无愧的荣誉。 – Roalt

1

如果JPA不能找到一个正确的JPA实现你得到这个错误(例如休眠,的EclipseLink)。

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

(由马特·汉迪在评论给出的答案)