0

我正在使用 eclipse + eclipselink + maven2 + mysql + jpa 2.0 + java SE。

我可以使用 Eclipse 从实体类创建 MySQL 表。persistence.xml 位于 src/main/resources/META-INF/...

我还在 eclipse 中指定了用于生产和测试的数据库连接。该项目选择了任何一个,并且似乎可以正常工作。

根据项目使用的数据源,将表创建到选定的数据库。作为数据库连接详细信息的 persistence.xml 中的内容被忽略(不确定会发生什么)。此外,如果我右键单击 persistence.xml 并选择“JPA 工具”>“同步类列表”。该文件使用实体类进行更新。

persistence.xml 也是必需的,否则将不会在任何一个数据库中创建表。(通过重命名文件测试)

早些时候,我还能够通过放入和加载东西来执行一些 DAO 方法进行测试。Eclipse 包资源管理器中还有一个名为“JPA”的菜单项,列出了项目中不再存在的 JPA 实体。

我没有对项目进行任何更改(仅在晚上关闭计算机)。下次打开项目时,我不再能够执行任何 DAO 方法,并且出现以下错误:

No Persistence provider for EntityManager named xxx

具有 DAO 方法的主类、Eclipse 运行的 JUnit 测试和 Maven 执行的相同测试也会出现同样的错误。

注意:我仍然能够从实体创建表。

有什么建议吗?

4

2 回答 2

0

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

部署组装

于 2012-06-01T00:04:30.030 回答
0

问题出在 pom.xml 中。

由于需要 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 和项目进行测试。

没有任何错误或它的运作方式并不表明它可能有些错误。

甚至不确定这是否完全正确,但至少它可以再次工作。

于 2012-06-01T09:12:38.163 回答