【发布时间】:2016-04-02 14:04:56
【问题描述】:
我在 src/main/resources/META-INF/ 有一个 persistence.xml,在 src/test/... 有另一个,它们的区别仅在于数据库的值:
<properties>
<property name="hibernate.archive.autodetection" value="class, hbm"/>
<property name="hibernate.connection.url" value="jdbc:mysql://localhost/lanchecker-prod" />
和:
<properties>
<property name="hibernate.archive.autodetection" value="class, hbm"/>
<property name="hibernate.connection.url" value="jdbc:mysql://localhost/lanchecker-test" />
不过,我也在使用类自动检测,它对主资源工作正常,但在我使用测试资源时失败。
有什么方法可以让它工作还是我必须使用明确的类命名?
编辑:
链接的建议实际上不起作用,它需要将项目构建为 .jar 并进行测试。就我而言,我正在尝试在 Eclipse 下进行测试,它可以解析 src/test/resources/META-INF/ 位置。
我尝试添加:
<jar-file>${PROJECT_LOC}/src/main/java/biz/ianw/lanchecker/</jar-file>
但这导致:
Exception in thread "main" java.lang.ExceptionInInitializerError
...
Caused by: javax.persistence.PersistenceException: Unable to build entity manager factory
...
Caused by: java.lang.IllegalArgumentException: Unable to visit JAR file:${PROJECT_LOC}/src/main/java/biz/ianw/lanchecker/. Cause: Illegal character in opaque part at index 6: file:${PROJECT_LOC}/src/main/java/biz/ianw/lanchecker/
然后:
<jar-file>C:\Users\Ian\git\LANchecker\src\main\java\biz\ianw\lanchecker\</jar-file>
通过了实体管理器工厂启动,但后来仍然失败:
Exception in thread "main" java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: RouteCabinFares is not mapped [select rcf from RouteCabinFares rcf]
(RouteCabinFares 是我尝试自动定位的类之一)。
也许这种技术只能用于在 jar 文件中自动定位?
【问题讨论】:
-
看起来就是这样,谢谢。没找到,我的错。我应该删除这个问题吗?
-
很高兴有帮助。不要担心这个问题,我将其标记为重复。管理员将决定是否删除它。
-
嗨@Nicholas。事实证明这毕竟行不通。我已经在上面解释了原因。
-
好吧,抱歉,我不确定。我刚刚进行了快速搜索以获取上述链接。我使用 arquillian 来测试一个 Web 项目,它能够构建一个用于测试的 war 文件。也许这样的事情会有所帮助,否则,我不知道。
标签: java jpa persistence.xml