我从Hibernate 4.2切换到了Hibernate 4.3,我的项目不再工作了。我正在
HibernateException: Unable to locate current JTA transaction
当我做
Session s = sessionFactory.getCurrentSession();
我已经意识到org.hibernate.transaction.TransactionManagerLookup不再存在。在Hibernate 4.3中已将其删除。我应该如何更改当前配置?
<hibernate-configuration>
<session-factory>
<property name="connection.datasource">testDS</property>
<property name="current_session_context_class">jta</property>
<property name="transaction.manager_lookup_class">com.atomikos.icatch.jta.hibernate3.TransactionManagerLookup</property>
<property name="transaction.factory_class">org.hibernate.transaction.CMTTransactionFactory</property>
<property name="connection.release_mode">auto</property>
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<property name="hibernate.hbm2ddl.auto">create-drop</property>
<property name="hibernate.show_sql">true</property>
<mapping class="test.entities.Person" />
<mapping class="test.entities.CreditCard" />
<mapping class="test.entities.ExampleRevEntity" />
</session-factory>
最佳答案
在Hibernate 4.3中,已删除了长时间不推荐使用的TransactionManagerLookup。现在,JTA提供程序必须实现org.hibernate.engine.transaction.jta.platform.spi.JtaPlatform。 JTA平台的抽象实现已在Hibernate中提供,即org.hibernate.engine.transaction.jta.platform.internal.AbstractJtaPlatform。使用它,为Atomikos编写JTA平台非常简单:
package test;
import javax.transaction.TransactionManager;
import javax.transaction.UserTransaction;
import org.hibernate.engine.transaction.jta.platform.internal.AbstractJtaPlatform;
import com.atomikos.icatch.jta.UserTransactionManager;
public class AtomikosJtaPlatform extends AbstractJtaPlatform {
private static final long serialVersionUID = 1L;
private UserTransactionManager utm;
public AtomikosJtaPlatform() {
utm = new UserTransactionManager();
}
@Override
protected TransactionManager locateTransactionManager() {
return utm;
}
@Override
protected UserTransaction locateUserTransaction() {
return utm;
}
}
另外,必须将平台实现类的名称添加到 hibernate 配置中:
<property name="hibernate.transaction.jta.platform">test.AtomikosJtaPlatform</property>
关于hibernate - 如何在Hibernate> = 4.3中使用Atomikos Transaction Essentials,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20681245/