我正在使用eclipse + eclipselink + maven2 + mysql + jpa 2.0 + java SE。
我可以使用Eclipse从Entity类创建MySQL表。 persistence.xml位于src / main / resources / META-INF /...
中我还在eclipse中指定了用于生产和测试的数据库连接。选择任何一个与项目,似乎工作。
根据项目使用的数据源,将表创建到选定的数据库。 persistence.xml中的数据库连接细节被忽略(不确定会发生什么)。此外,如果我右键单击persistence.xml并选择“JPA Tools”> '同步班级列表'。该文件将使用实体类进行更新。
还需要persistence.xml,否则不会在任何一个数据库中创建表。 (通过重命名文件进行测试)
之前我还能够通过输入和加载东西来执行一些DAO方法进行测试。 eclipse包浏览器中还有一个名为“JPA”的菜单项,列出了项目中不再存在的JPA实体。
我没有对项目进行任何更改(仅关闭计算机一晚)。下次打开项目时,我无法再执行任何DAO方法,并且出现以下错误:
No Persistence provider for EntityManager named xxx
同样的错误来自于具有DAO方法的主类,由Eclipse运行的JUnit测试以及由Maven执行的相同测试。
注意:我仍然可以从实体创建表。
有什么建议吗?
答案 0 :(得分:0)
通常,这是因为您的资源目录未部署到您的应用程序容器中。在eclipse中,右键单击项目并在Project Explorer中选择Properties。然后,选择Deployment Assembly属性并确保正在部署“/ src / main / resources”:
答案 1 :(得分:0)
问题出在pom.xml中。
我对hibernate有依赖性,因为需要使用eclipselink。
错误:这就是我所拥有的
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.1.3.Final</version>
</dependency>
右:假设是
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>eclipselink</artifactId>
<version>2.0.0</version>
<scope>compile</scope>
</dependency>
我通过纯粹测试一切可能来获得解决方案。甚至不确定我是如何设法尝试替换的,因为我能够使用相同的pom&amp; amp;项目早些时候。
这些错误或其运作方式都没有表明它可能有点不对。
甚至不确定这是完全正确的,但至少它再次起作用。