我正在开发一个Hibernate项目,使用了Netbeans的Hibernate 4.3.1库。然后,我需要使用Apache Lucene进行全文搜索。为了能够使用Lucene,我需要切换到Hibernate 5.x jars。我可以定义一个新Transaction对象,但是class wasRollecBack方法Transaction不起作用。我在很多地方都使用过这种方法,但现在遇到了麻烦。当我查看Hibernate 5.0.6的javadoc时,没有类似的东西org.hibernate.transaction。有,org.hibernate.engine.transaction但也不起作用。
Transaction
wasRollecBack
org.hibernate.transaction
org.hibernate.engine.transaction
当我回到4.3.1 wasRolledBack正常工作时,但是这次我无法使用Lucene库运行项目。我很困惑。
wasRolledBack
wasRolledBack方法不包含在Hibernate 5.0.6版本Transaction接口 Here中。
Hibernate 5.0.6
4.3.1``wasRolledBack方法中发生的版本。
4.3.1``wasRolledBack
现有方法:
public interface Transaction { void begin(); void commit(); void rollback(); TransactionStatus getStatus(); void registerSynchronization(Synchronization synchronization) throws HibernateException; void setTimeout(int seconds); int getTimeout(); void markRollbackOnly(); }
我没有测试,但是可以使用该getStatus方法。
getStatus
例:
TransactionStatus transactionStatus = session.getTransaction().getStatus(); if(transactionStatus.equals(TransactionStatus.ROLLED_BACK)){ //action s.a :) }
编辑1:
TransactionStatus 枚举常量和说明:
TransactionStatus
活动 :事务已开始,但尚未完成。 COMMITTED :本次交易已成功竞争。 COMMITTING :状态代码,指示已开始两阶段提交协议的第二阶段但尚未完成此阶段的事务。 FAILED_COMMIT :事务尝试提交,但失败。 MARKED_ROLLBACK :已将事务标记为仅回滚。 NOT_ACTIVE :交易尚未开始 ROLLED_BACK :事务已回滚。 ROLLING_BACK :状态代码,指示正在回滚的事务。
活动 :事务已开始,但尚未完成。
COMMITTED :本次交易已成功竞争。
COMMITTING :状态代码,指示已开始两阶段提交协议的第二阶段但尚未完成此阶段的事务。
FAILED_COMMIT :事务尝试提交,但失败。
MARKED_ROLLBACK :已将事务标记为仅回滚。
NOT_ACTIVE :交易尚未开始
ROLLED_BACK :事务已回滚。
ROLLING_BACK :状态代码,指示正在回滚的事务。