我正在开发一个Hibernate项目。我使用过Netbeans的Hibernate 4.3.1库。然后我需要使用Apache Lucene进行全文搜索。为了能够使用Lucene,我需要切换到Hibernate 5.x jar。我可以定义一个新的Transaction
对象,但wasRollecBack
类的Transaction
方法不起作用。我在几个地方使用过这种方法,现在我被卡住了。当我查看Hibernate 5.0.6的javadoc时,没有像org.hibernate.transaction
那样的东西。有org.hibernate.engine.transaction
,但它也不起作用。
当我回到4.3.1 wasRolledBack
正在工作但是这次我不能用lucene库运行项目。我很迷惑。
答案 0 :(得分:2)
wasRolledBack
方法未包含在Hibernate 5.0.6
版Transaction
接口Here中。
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
方法。
示例:
TransactionStatus transactionStatus = session.getTransaction().getStatus();
if(transactionStatus.equals(TransactionStatus.ROLLED_BACK)){
//action s.a :)
}
编辑1:
TransactionStatus
枚举常量和说明:
ACTIVE :交易已经开始,但尚未完成。
委托:交易已成功竞争。
COMMITTING :状态代码,表示已开始的事务 两阶段提交协议的第二阶段,但尚未完成 这个阶段。
FAILED_COMMIT :事务尝试提交,但是 失败。
MARKED_ROLLBACK :事务已标记为仅回滚。
NOT_ACTIVE :交易尚未开始
ROLLED_BACK :事务已回滚。
ROLLING_BACK :指示其中的交易的状态代码 回滚过程。