2015-11-21 48 views
1

這實質上是How to locate the source of JBAS011470 error in JBoss?的JBoss EAP 6.3 CMT多個持久化單元

重複但從本質上講,只要我添加第二個持久單元,它給了我這個錯誤。這很荒謬。我不會像某些人所說的那樣禁用JPA子系統 - 這聽起來不對。

我的persistence.xml設置如下,其中java:/NAME被設置爲在standalone.xml數據源:

<?xml version="1.0"?> 
<persistence xmlns="http://java.sun.com/xml/ns/persistence" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation= 
     "http://java.sun.com/xml/ns/persistence 
     http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" 
     version="2.0"> 


<persistence-unit name="name" transaction-type="JTA"> 

    <jta-data-source>java:/NAME</jta-data-source> 

    <class>za.co.classes.A</class> 
    <class>za.co.classes.B</class> 
    <class>za.co.classes.C</class> 


    <properties> 

     <property name="hibernate.transaction.jta.platform" 
       value="org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform"/> 
     <property name="hibernate.transaction.manager_lookup_class" 
       value="org.hibernate.transaction.JBossTransactionManagerLookup"/> 
     <property name="jboss.entity.manager.factory.jndi.name" 
      value="java:jboss/persistence/NAME" /> 
     <property name="jboss.entity.manager.jndi.name" 
      value="java:jboss/persistence/em/NAME" /> 
     <property name="hibernate.dialect" value="za.co.equrahealth.dao.SQLServerDialect" /> 
    </properties> 

</persistence-unit> 

的錯誤,當我添加第二個持久單元開始。所以春天的背景是無​​關緊要的。

回答

0

嗯,我很幸運在同一個模式中有多個數據庫,所以我提出了一個解決方法。但是,當有多個模式時,顯然不能解決問題。我認爲這個問題的原因實際上可能是JBoss中的一個錯誤。

@PersistenceContext 
private EntityManager entityManager; 

private EntityManager getEntityManager(String source) 
{ 

    if ("a".equalsIgnoreCase(source)) 
    { 
     entityManager.createNativeQuery("USE A_DB;").executeUpdate(); 
    } 
    else 
    { 
     entityManager.createNativeQuery("USE B_DB").executeUpdate(); 
    } 

    return entityManager; 
}