2015-01-15 37 views
0

我有2間數據源的連接,我確定每個連接應使用的類,但我仍然得到一些例外:多個連接+ JPA +春

這是我的applicationContext.xml

<context:component-scan base-package="com.example.video"/> 
    <context:annotation-config/> 
    <tx:annotation-driven /> 
    <jee:jndi-lookup id="VOD" jndi-name="java:comp/env/jdbc/VOD" /> 
    <jee:jndi-lookup id="SB" jndi-name="java:comp/env/jdbc/SB" /> 



    <bean id="entityManagerFactory" 
     class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
     <property name="dataSource" ref="VOD" /> 
     <property name="packagesToScan" value="com.example.video" /> 
     <property name="persistenceProviderClass" value="org.hibernate.ejb.HibernatePersistence" /> 
     <property name="jpaProperties"> 
       <props> 
         <prop key="hibernate.hbm2ddl.auto">validate</prop> 
       </props> 
     </property> 
    </bean> 

    <bean id="transactionManager" 
     class="org.springframework.orm.jpa.JpaTransactionManager"> 
     <property name="entityManagerFactory" ref="entityManagerFactory"/> 
    </bean> 


    <bean id="entityManagerFactorySB" 
     class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
     <property name="dataSource" ref="SB" /> 
     <property name="packagesToScan" value="com.example.service" /> 
     <property name="persistenceProviderClass" value="org.hibernate.ejb.HibernatePersistence" /> 
     <property name="jpaProperties"> 
       <props> 
         <prop key="hibernate.hbm2ddl.auto">validate</prop> 
       </props> 
     </property> 
    </bean> 

    <bean id="transactionManagerSB" 
     class="org.springframework.orm.jpa.JpaTransactionManager"> 
      <property name="entityManagerFactory" ref="entityManagerFactorySB"/> 
    </bean> 

    <jpa:repositories base-package="com.example.video" 
         entity-manager-factory-ref="entityManagerFactory" 
         transaction-manager-ref="transactionManager"/> 

    <jpa:repositories base-package="com.example.service" 
         entity-manager-factory-ref="entityManagerFactorySB" 
transaction-manager-ref="transactionManagerSB"/> 

這裏是我的persistence.xml

<persistence-unit name="VOD" transaction-type="RESOURCE_LOCAL"> 

     <provider>org.hibernate.ejb.HibernatePersistence</provider> 
     <class>com.example.video.model.Product</class> 
          . 
          . 
     <class>com.example.video.model.Task</class> 
     <exclude-unlisted-classes>true</exclude-unlisted-classes> 

     <properties> 

      <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" /> 
      <property name="hibernate.show_sql" value="true" /> 
      <property name="hibernate.format_sql" value="true" /> 
      <property name="hibernate.transaction.factory_class" value="org.hibernate.transaction.JDBCTransactionFactory" /> 
      <property name="hibernate.hbm2ddl.auto" value="update" /> 
     </properties> 

    </persistence-unit> 
    <persistence-unit name="SB" transaction-type="RESOURCE_LOCAL"> 

     <provider>org.hibernate.ejb.HibernatePersistence</provider> 
     <class>com.example.service.model.ChargingInfo</class> 
     <exclude-unlisted-classes>true</exclude-unlisted-classes> 

    </persistence-unit> 
</persistence> 

這是個例外: 產生的原因:org.hibernate.HibernateException:缺少表:充電信息

+0

你的數據庫中有CHARGINGINFO表嗎? – 2015-01-15 18:36:00

+0

是的,DB是OK的。 – 2015-01-19 08:43:16

回答

0

發現問題,就必須從applicationContext.xml中

< 支撐鍵= 「hibernate.hbm2ddl.auto」 刪除行>驗證

從bean聲明

然後它工作得很好。