以下是我的映射文件的示例:
<!-- ============================ -->
<!-- Table TABLE1 -->
<!-- ============================ -->
<class table="TABLE1"
name="com.myCompany.Entity1" lazy="false" schema="SCHEMA1">
<!-- Attributs -->
<id column="ID" name="id" type="string" />
<property column="ACTION_TYPE" name="actionType"
type="com.myCompany.ActionEnumType" not-null="true" />
<property column="PRIORITY" name="priority"
type="com.myCompany.PriorityEnumType" not-null="true" />
<property column="DATE_MAJ" name="dateMaj" />
</class>
<!-- ============================ -->
<!-- Table TABLE2 -->
<!-- ============================ -->
<class table="TABLE2"
name="com.myCompany.Entity2"
lazy="false" schema="SCHEMA2">
<!-- Attributs -->
<id column="ID" name="id" type="string" />
<property column="ACTION_TYPE" name="actionType"
type="com.myCompany.ActionEnumType" not-null="true" />
<property column="PRIORITY" name="priority"
type="com.myCompany.PriorityEnumType" not-null="true" />
<property column="DATE_MAJ" name="dateMaj" />
</class>
<!-- ============================ -->
<!-- Table TABLE3 -->
<!-- ============================ -->
<class table="TABLE3"
name="com.myCompany.Entity3"
lazy="false" schema="SCHEMA3">
<!-- Attributs -->
<id column="ID" name="id" type="string" />
<property column="ACTION_TYPE" name="actionType"
type="com.myCompany.ActionEnumType" not-null="true" />
<property column="PRIORITY" name="priority"
type="com.myCompany.PriorityEnumType" not-null="true" />
<property column="DATE_MAJ" name="dateMaj" />
</class>
目标是将所有数据配置在一个外部文件中。 目的是动态定义模式名称,因为它取决于部署环境。 不幸的是,我们不能在我们的项目中使用Maven和Ant。 我如何或在何处设置不同的模式名称来解决此问题?
请事先帮助你。
答案 0 :(得分:0)
不,不支持此类内容,因此使用Maven或Ant等工具根据属性文件动态设置此值是可行的方法。
答案 1 :(得分:0)
在Hibernate中没有这方面的支持。但是,我们使用Ant通过特定于环境的属性文件来实现此目的。
答案 2 :(得分:0)
Hibernate支持使用hibernate.cfg.xml
属性在配置文件(hibernate.properties
或hibernate.default_schema
)中为非限定表名定义默认目录。来自文档:
3.4. Optional configuration properties
...
hibernate.default_schema:使用生成的SQL中的给定模式/表空间限定非限定表名。 例如 SCHEMA_NAME
根据您的用例的复杂程度,这可能会有所帮助(或不会)。如果没有,我担心你将不得不使用某种过滤方法(Ant也提供过滤) - 或修补Hibernate。