我正在尝试在 Maven 构建期间将测试数据加载到测试数据库中以进行集成测试。persistence.xml 被target/test-classes/META-INF/
正确复制到,但是在运行测试时出现此异常。
javax.persistence.PersistenceException:没有名为目标数据库的 EntityManager 的持久性提供程序
看起来它没有找到或加载persistence.xml。
我正在尝试在 Maven 构建期间将测试数据加载到测试数据库中以进行集成测试。persistence.xml 被target/test-classes/META-INF/
正确复制到,但是在运行测试时出现此异常。
javax.persistence.PersistenceException:没有名为目标数据库的 EntityManager 的持久性提供程序
看起来它没有找到或加载persistence.xml。
刚刚用基于 Maven/Eclipse 的 JPA 项目解决了同样的问题。
我有我的 META-INF 目录src/main/java
,因为它在测试阶段之前没有被复制到目标目录。
移动此目录以src/main/resources
解决问题并确保在运行测试时该META-INF/persistence.xml
文件存在。target/classes
我认为JPA 方面将我的META-INF/persistence.xml
文件放入 中src/main/java
,结果证明这是我的问题的根源。
我正在使用 Maven2,我忘记在我的 pom.xml 文件中添加这个依赖项:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>3.4.0.GA</version>
</dependency>
如果这是在 Windows 上,您可以使用 sysinternal 的 procmon 来确定它是否正在检查正确的路径。
只需按路径过滤 -> 包含 -> persistence.xml。Procmon 将拾取任何打开名为 persistenc.xml 的文件的尝试,您可以检查以查看尝试的路径。
有关 procmon 的更多详细信息,请参见此处:http ://technet.microsoft.com/en-us/sysinternals/bb896645.aspx
我遇到了同样的问题,不是找不到persistence.xml文件,而是找不到XML中指定的提供程序。
确保您的 xml 文件中有正确的 JPA 提供程序依赖项和正确的提供程序定义。
IE。<provider>oracle.toplink.essentials.PersistenceProvider</provider>
使用 maven,我必须在本地安装 2 个 toplink-essentials jar,因为没有包含依赖项的公共存储库。
您的 persistence.xml 是否位于 scr/test/resources 中?因为我面临着类似的问题。
只要我的persistence.xml位于src/main/resources中,一切正常。
如果我将persistence.xml移动到src/test/resources就没有任何效果了。
唯一有用但可悲的答案在这里:http: //jira.codehaus.org/browse/SUREFIRE-427
由于不明原因,现在似乎不可能。:-(
我们遇到了同样的问题,对项目进行了一些调整,最后发现了以下问题(更清晰的错误描述):在 oracle.toplink.essentials.ejb.cmp3.persistence。PersistenceUnitProcessor.computePURootURL(PersistenceUnitProcessor.java:248)
有了这些信息,我们想起了一个主要规则:路径名中没有空格!!!
尝试这个。为我们微笑。也许有一天这会得到解决。
希望这对你有用。祝你好运。