Java 未使用jta事务管理器回滚事务

Java 未使用jta事务管理器回滚事务,java,hibernate,spring,jta,Java,Hibernate,Spring,Jta,我是春天和冬眠的新手请帮忙 我正在使用(Jboss 6.0最终版作为服务器) org.springframework.transaction.jta.JtaTransactionManager 作为具有属性集的bean TransactionManager名称为java:/TransactionManager和 userTransactionName为java:comp/UserTransaction 在代码中,我设置了jtaTxManager属性设置器 jtaTxManager 然后 java

我是春天和冬眠的新手请帮忙

我正在使用(Jboss 6.0最终版作为服务器)

org.springframework.transaction.jta.JtaTransactionManager

作为具有属性集的bean

TransactionManager名称为java:/TransactionManager和

userTransactionName为java:comp/UserTransaction

在代码中,我设置了jtaTxManager属性设置器

jtaTxManager 然后

javax.transaction.TransactionManager tx=jtaTxManager.getTransactionManager(); 然后使用tx.begin()语句启动事务

tx.begin() 我已经使用sessionFactory.getCurrentSession()来获取hibernate的会话

sessionFactory.getCurrentSession() 最后我用了

tx.commit() tx.commit() 我正在使用hibernate在jta事务中保存多个记录 但是,如果在这两者之间发生任何数据库错误,则在tx.commit()上引发约束冲突异常,该异常是javax.transaction.RollbackException,当catch调用tx.rollback()时,我的事务没有得到rollback,并且在tx.rollback()上得到以下异常。我没有在hibernate属性中设置任何类型的自动提交属性

但我在中的第一个记录保存在数据库中,理想情况下它们不应该保存,但在回滚时会发生此异常,所以我认为这就是为什么要保存它们

java.lang.IllegalStateException: BaseTransaction.rollback - [com.arjuna.ats.internal.jta.transaction.arjunacore.notx] [com.arjuna.ats.internal.jta.transaction.arjunacore.notx] no transaction! at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.rollback(BaseTransaction.java:158) at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.rollback(BaseTransactionManagerDelegate.java:114) java.lang.IllegalStateException:BaseTransaction.rollback-[com.arjuna.ats.internal.jta.transaction.arjunacore.notx][com.arjuna.ats.internal.jta.transaction.arjunacore.notx]无交易! 位于com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.rollback(BaseTransaction.java:158) 位于com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.rollback(BaseTransactionManagerDelegate.java:114)
Javadoc声明,当事务被回滚而不是提交时,会抛出回滚异常——我认为,在这种情况下,您不必手动回滚它。

此问题是由于数据源配置造成的,忘记了前面提到的

已从application-context.xml中删除

org.springframework.jdbc.datasource.driverManager数据源


与此相反,使用了在oracle xa ds.xml中配置的jboss的jndi datasorce,您启动了事务吗?是的,但在回滚时,我得到了以上关于tx.commit()的异常;我得到了类似javax.transaction.RollbackException的异常:[com.arjuna.ats.internal.jta.transaction.arjunacore.commitwhenaborted][com.arjuna.ats.internal.jta.transaction.arjunacore.commitwhenaborted],我以前的记录仍然保存了下来 javax.transaction.RollbackException java.lang.IllegalStateException: BaseTransaction.rollback - [com.arjuna.ats.internal.jta.transaction.arjunacore.notx] [com.arjuna.ats.internal.jta.transaction.arjunacore.notx] no transaction! at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.rollback(BaseTransaction.java:158) at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.rollback(BaseTransactionManagerDelegate.java:114)