gpt4 book ai didi

java - JBoss EAP 6.3 CMT 多个持久性单元

转载 作者:太空宇宙 更新时间:2023-11-04 13:12:19 24 4
gpt4 key购买 nike

这本质上是How to locate the source of JBAS011470 error in JBoss?的重复。

但本质上,一旦我添加第二个持久单元,它就会给我这个错误。这太荒谬了。我不会像某些人建议的那样禁用 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>

当我添加第二个持久性单元时,错误就会开始。所以 spring 上下文是无关紧要的。

最佳答案

好吧,幸运的是,我在同一模式下有多个数据库,所以我想出了一个解决方法。但当存在多个模式时,这显然不能解决问题。我认为这个问题的原因实际上可能是 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;
}

关于java - JBoss EAP 6.3 CMT 多个持久性单元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33845395/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com