是否可以在实例化期间指定schema_name?

时间:2015-03-04 10:48:20

标签: java spring hibernate

我正在使用Spring 2.5.5Hibernate 3.2.1

我有以下实体:

@Entity
@Table(schema = "mailing", name = "mailing")
public class Mailing {
    //Fields, GET, SET
}

问题是我需要在多个项目中使用该实体,在某些项目中我们应该指定不同的schema_name。我想将此实体类放在公共位置以避免代码重复。例如,Project A架构名称为commmon_maling,但Project B架构名称仅为mailing。是否可以在我们定义springApplicationContext.xml bean的SessionFactory中指定架构名称,如下所示:

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />

        <property name="annotatedClasses">
            <list>
                 <!-- Some classes -->
            </list>
        </property>
</bean>

1 个答案:

答案 0 :(得分:1)

您可以定义hibernateProperties属性并在其中添加架构,例如

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />

        <property name="annotatedClasses">
            <list>
                 <!-- Some classes -->
            </list>
        </property>
        <property name="hibernateProperties">
            <props>
               ...
               <property name="hibernate.default_schema">yourschema</property>
               ...
            </props>            
        </property>
</bean>