我有两个JPA实体引用我的DB2数据库上的两个表,比如:
两者都可以使用相同的凭据和数据源访问。而且,模式在测试和生产环境之间是不同的,然后我必须从配置属性文件中加载它们。
我的应用程序使用Spring MVC和Hibernate。实体如下:
@Entity
@Table(name="FIRST")
public class FirstClass implements Serializable {
....
}
@Entity
@Table(name="SECOND")
public class SecondClass implements Serializable {
....
}
使用此"模式",查询通过在context.xml上配置两个Entity Managers Factory来完成所有工作,一个使用默认架构FIRSTSCHEMA,另一个使用默认架构SECONDSCHEMA。
我想以不同的方式查询数据库,也是为了事务目的(我不仅执行SELECT查询)。
然后我发现我可以将架构指定为@Table注释的属性。但这必须是一个常量表达式(编译时已知),我必须从配置属性加载它,具体取决于环境。有没有人知道实现这一目标的方法,考虑可能采用Spring注入值或任何其他技术的方法?
答案 0 :(得分:0)
在maven中,您可以定义配置文件,并可以使用该配置文件设置属性。
如果我是你,我会定义两个配置文件:production
和test
。
例如:
<profiles>
<profile>
<id>production</id>
<properties>
<schema.name>production_schema_name</schema.name>
</properties>
</profile>
<profile>
<id>test</id>
<properties>
<schema.name>test_schema_name</schema.name>
</properties>
</profile>
</profiles>
然后使用${schema.name}
访问个人资料属性。