从Hibernate 4.3.1切换到5.0.6并且事务已经消失

时间:2015-12-24 21:36:30

标签: java hibernate netbeans jar transactions

我正在开发一个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库运行项目。我很迷惑。

1 个答案:

答案 0 :(得分:2)

wasRolledBack方法未包含在Hibernate 5.0.6Transaction接口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 :指示其中的交易的状态代码   回滚过程。