【发布时间】:2018-07-29 11:13:21
【问题描述】:
在我们的项目中,我们使用来自内部库的实体(我们使用将它们作为 JAR 包含在内)。类本身看起来像这样(此处无法粘贴真实代码)。
@Table(name = "X_MY_ENTITY")
public class MyEntity{
//columns...
}
在我们的 persistence.xml 中,我们包含一个映射文件,将表名映射到我们的约定。
<entity class="com.example.MyEntity">
<table name="REALNAME_MY_ENTITY"/>
<sequence-generator name="id_seq" sequence-name="REALNAME_MY_ENTITY_SEQ" allocation-size="1"/>
</entity>
一切正常。
现在我们使用 Arquillian 进行集成测试,并使用 sql-maven-plugin 生成测试模式。现在我希望插件也生成一个视图。在 sql-maven-plugin 的配置中,我包含了一个创建视图的 sql 文件。此视图使用上面提到的表格(例如create or replace view EXAMPLE_VIEW as select * from REALNAME_MY_ENTITY)。但是当我尝试构建项目时,出现错误:Table "REALNAME_MY_ENTITY" not found;
我在 src/test/resources/META-INF/orm.xml 中获得了我的 orm.xml(映射文件),包括它到我的部署包和我的 test-persistence.xml 中
我们正在使用:
- Java 8 + Java EE7
- 打开 EJB v 7.0.4
- Arquillian JUnit 核心 1.1.11.Final
- sql-maven-plugin v1.5
如何配置使用映射表名的 Arquillian 或 sql-maven-plugin?
【问题讨论】:
-
所以视图可以工作(见表格),但代码虽然以前工作正常,但不能正常工作,对吧?您确定测试环境中的架构名称与之前的工作方式相同吗?
-
或者您的意思是 arquillian 无法读取 orm.xml 文件?您是否尝试使用 @Table*name="REALNAME_MY_ENTITY") 来注释实体只是为了确定问题出在哪里
-
我找到了:我看错地方了。显然模式是由 hibernate4-maven-plugin 生成的,您可以配置一个映射文件(hibernateMapping)。现在 sql-maven-plugin 生成具有正确名称的表。
标签: java jpa java-ee-7 jboss-arquillian sql-maven-plugin