一尘不染

从Hibernate 4.3.1切换到5.0.6,事务消失了

hibernate

我正在开发一个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但也不起作用。

当我回到4.3.1 wasRolledBack正常工作时,但是这次我无法使用Lucene库运行项目。我很困惑。


阅读 196

收藏
2020-06-20

共1个答案

一尘不染

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 枚举常量和说明:

活动 :事务已开始,但尚未完成。

COMMITTED :本次交易已成功竞争。

COMMITTING :状态代码,指示已开始两阶段提交协议的第二阶段但尚未完成此阶段的事务。

FAILED_COMMIT :事务尝试提交,但失败。

MARKED_ROLLBACK :已将事务标记为仅回滚。

NOT_ACTIVE :交易尚未开始

ROLLED_BACK :事务已回滚。

ROLLING_BACK :状态代码,指示正在回滚的事务。

2020-06-20