【发布时间】:2018-04-24 17:46:28
【问题描述】:
我有两个 JPA 实体引用我的 DB2 数据库中的两个表,比如:
- 架构 FIRSTSCHEMA 上的表 FIRST
- 模式 SECONDSCHEMA 上的表 SECOND
两者都可以使用相同的凭据和数据源进行访问。此外,测试环境和生产环境的模式不同,因此我必须从配置属性文件中加载它们。
我的应用程序使用 Spring MVC 和 Hibernate。实体如下:
@Entity
@Table(name="FIRST")
public class FirstClass implements Serializable {
....
}
@Entity
@Table(name="SECOND")
public class SecondClass implements Serializable {
....
}
使用这种“模式”,查询通过在 context.xml 上配置两个实体管理器工厂来完成所有工作,一个具有默认模式 FIRSTSCHEMA,第二个具有默认模式 SECONDSCHEMA。
我希望有一种不同的方式来查询数据库,也用于事务目的(我不仅执行 SELECT 查询)。
然后我发现我可以将架构指定为@Table 注释的属性。但这必须是一个常量表达式(编译时已知),我必须从配置属性中加载它,具体取决于环境。有谁知道实现这一目标的方法,考虑使用 Spring 或任何其他技术注入值的方法?
【问题讨论】:
-
当您需要更改部署时,在注释中硬编码架构信息是一个坏主意。你有
orm.xml,或者你有persistence.xml
标签: java spring hibernate jpa database-schema