【发布时间】:2011-11-25 16:38:28
【问题描述】:
我在 applicationContext 中定义了两个事务管理器,引用了两个完全不同的 sessionFactories。我正在尝试将注释与其中一个事务管理器一起使用,但它似乎将所有注释应用于两个事务管理器。
我要迁移到的新数据库有<property name="hbm2ddl.auto">create</property>,而我要迁移的另一个数据库有<property name="hbm2ddl.auto">validate</property>
我已经用@Entity注解了我的新域对象。hibernate 正在尝试在遗留数据库上验证这些类,我认为我已经设置为忽略注解(通过不指定注解)。下面是appContext的相关sn-ps:
<tx:annotation-driven transaction-manager="transactionManager1" />
<context:property-placeholder location="file:${catalina.home}/conf/database.properties" ignore-unresolvable="true"/>
<bean id="sessionFactory1" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean" p:dataSource-ref="dataSource1" p:configLocation="WEB-INF/classes/hibernate.cfg.xml" p:packagesToScan="com.mycompany"/>
<!-- Declare a datasource that has pooling capabilities-->
<bean id="dataSource1" class="com.mchange.v2.c3p0.ComboPooledDataSource"
p:driverClass="${app.driverClassName}" p:jdbcUrl="${app.url}"
p:user="${app.username}" p:password="${app.password}"
<!-- Declare a transaction manager-->
<bean id="transactionManager1" class="org.springframework.orm.hibernate3.HibernateTransactionManager" p:sessionFactory-ref="sessionFactory1" />
和同一 appContext 中的旧数据库:
<bean id="sessionFactory2" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean" p:dataSource-ref="dataSource2" p:configLocation="WEB-INF/classes/hibernateTraveller.cfg.xml" p:packagesToScan="com.mycompany"/>
<!-- Declare a datasource that has pooling capabilities-->
<bean id="dataSource2" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"
p:driverClass="${app2.driverClassName}" p:jdbcUrl="${app2.url}"
p:user="${app2.username}" p:password="${app2.password}"
<!-- Declare a transaction manager-->
<bean id="transactionManager2" class="org.springframework.orm.hibernate3.HibernateTransactionManager"
p:sessionFactory-ref="sessionFactoryTraveller">
<qualifier value="legacyDB"/>
</bean>
任何指针?
【问题讨论】: