使用多个sessionFactory时奇怪的行为packageToScan和annotatedClasses?

时间:2013-10-09 12:16:39

标签: java hibernate spring-mvc jndi sessionfactory

所以这就是..

我在glassfish服务器中配置了两个jndi用于通信两个不同的数据库。在我的applicationContext.xml中我有以下配置

 <!-- Database connection 1 STARTS HERE-->
<jee:jndi-lookup id="JNDI1" jndi-name="jdbc/db1"/>
    <bean id="sessionFactory"
            class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
        <property name="dataSource" ref="JNDI1" />
<!--        <property name="annotatedClasses">
            <list>
                <value>com.test.db1.Person</value>  //THIS WORKS FINE
            </list>
        </property>-->
        <property name="packagesToScan" value="com.test.db1" /> //THIS IS STRANGE
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.hbm2ddl.auto">update</prop>
                <prop key="hibernate.connection.autocommit">false</prop>
            </props>
        </property>
    </bean>
   <!-- Database connection 1 ENDS HERE-->



    <!-- Database connection 2 STARTS HERE-->
    <jee:jndi-lookup id="JNDI2" jndi-name="jdbc/db2" />
    <bean id="sessionFactory2"
          class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
        <property name="dataSource" ref="JNDI2" />
       <property name="packagesToScan" value="com.test.db2" />
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.hbm2ddl.auto">update</prop>
                <prop key="hibernate.connection.autocommit">false</prop>
            </props>
        </property>
    </bean>
 <!-- Database connection 2 ENDS HERE-->

com.test.db1包中,我只有Person个类,在com.test.db2个包中,我有两个名为EmployeeCompany的实体。

当我在两个SessionFactory bean中使用 packageToScan 属性时,会出现问题。在两个数据库中都创建了所有3个表。当我使用 <显式定义实体类时em> annotatedClasses 属性表是在jndi中配置的相关数据库中生成的。我无法理解为什么在使用 packageToScan 时我得到的这种结果
如果有人能详细解释我,我将不胜感激。

谢谢

0 个答案:

没有答案