我需要将使用hibernate的项目从Jboss迁移到weblogic。目前我正在使用此配置:
的persistence.xml
<persistence-unit name="pagosHibernate" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>...</class>
<properties>
<property name="hibernate.ejb.cfgfile" value="META-INF/hibernate.cfg.xml"/>
</properties>
</persistence-unit>
的hibernate.cfg.xml
<hibernate-configuration>
<session-factory>
<property name="connection.datasource">MyDS</property>
<property name="jndi.class">weblogic.jndi.WLInitialContextFactory</property>
<property name="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.WeblogicTransactionManagerLookup</property>
<property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
<property name="transaction.factory_class">org.hibernate.transaction.JTATransactionFactory</property>
</session-factory>
</hibernate-configuration>
代码是:
EntityManager em = this.factory.createEntityManager();
EntityTransaction entityTransaction = em.getTransaction();
entityTransaction.begin();
...
em.persist(device);
entityTransaction.commit();
但我得到了:
java.sql.SQLException: Cannot call commit when using distributed transactions
由于
答案 0 :(得分:1)
数据源&#34; MyDS&#34;在Hibernate配置中使用的看起来像XA DataSource。 在您的情况下,应使用非XA数据源。在Weblogic中配置DataSource时,您必须选择适当的瘦驱动程序。希望这会有所帮助。
答案 1 :(得分:0)
这个问题是由R Sawant所说的XA数据源引起的。然而,解决方案是创建一个非XA数据源并禁用全局事务(保持全局事务激活持久存在问题)。
我想知道如何配置这个项目来处理XA数据库,但那将是另一个问题。