无法测试jpa / maven项目。我有错误 “javax.persistence.PersistenceException:没有名为xxx的EntityManager的持久性提供程序” 当我从命令行运行“mvn cleant test”时。我有一个Java SE项目。
我在'src / test / resources / META-INF / persistence.xml'中有持久性配置。我对'src / main / ...'也有同样的看法。 我可以在'target / classes / META-INF'中看到persistence.xml。只有那是来自主要的,而不是来自测试,因为我运行测试。这还不是问题,因为两者都应该有效。 第一次尝试JPA,但正如我所见,文件应该没问题(位置和内容)。
持久性单元名称也应匹配。
我正在使用带有m2和其他必要插件的Eclipse(EE),但是从命令行运行maven。我发现项目没有错误。
//更新
尝试修复maven构建,因为我注意到它应该具有'target / test-classes'中的测试类和资源。 将命令更改为“mvn clean test-compile test” 现在可以从正确的位置找到资源,但我仍然遇到同样的错误。
// update
为清楚起见,这是完整的persistence.xml
<persistence version="1.0"
xmlns="http://java.sun.com/xml/ns/persistence">
<persistence-unit name="xxx"
transaction-type="RESOURCE_LOCAL">
<provider>my.package.EntityManagerFactoryHelper</provider>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/db" />
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
<property name="javax.persistence.jdbc.user" value="yyy" />
<property name="javax.persistence.jdbc.password" value="zzz" />
<property name="eclipselink.ddl-generation" value="DROP_AND_CREATE" />
</properties>
</persistence-unit>
我从其他帖子中获取了帮助示例。基本上它只是使用'xxx'持久性单元创建emf。这是辅助类。 http://pastebin.com/1GE6uMa1
答案 0 :(得分:0)
尝试添加&lt;提供商GT; org.hibernate.ejb.HibernatePersistence&LT; /提供商GT;内部标签
答案 1 :(得分:0)
提供者必须是:
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
否则表创建失败,即使从实体创建表时没有错误。
花了大约两天的时间来解决这个问题,因为我认为通过给定的提示指出了正确的方向,然后没有检查提供者。
提供程序必须符合eclipselink,因为您可以在'persistence.xml'的配置中发现它。
但我没有明确说出来。不知道它会那么重要,它甚至成功创建了一次表。然后我不确定我对提供者有什么,但随后失败了(在对表进行更改之后)。 可能应该由提供商进行其他配置。