DAO类无法看到persistence.xml

时间:2012-05-31 14:14:08

标签: eclipse jpa-2.0 eclipselink

我正在使用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执行的相同测试。

注意:我仍然可以从实体创建表。

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

通常,这是因为您的资源目录未部署到您的应用程序容器中。在eclipse中,右键单击项目并在Project Explorer中选择Properties。然后,选择Deployment Assembly属性并确保正在部署“/ src / main / resources”:

Deployment Assembly

答案 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;项目早些时候。

这些错误或其运作方式都没有表明它可能有点不对。

甚至不确定这是完全正确的,但至少它再次起作用。