【问题标题】:Switched from Hibernate 4.3.1 to 5.0.6 and Transaction is gone从 Hibernate 4.3.1 切换到 5.0.6 并且事务消失了
【发布时间】:2016-03-31 05:07:25
【问题描述】:

我正在开发一个 Hibernate 项目。我使用了 Netbeans 的 Hibernate 4.3.1 库。然后我需要使用 Apache Lucene 进行全文搜索。为了能够使用 Lucene,我需要切换到 Hibernate 5.x jars。我可以定义一个新的 Transaction 对象,但 wasRollecBack 类的 wasRollecBack 方法不起作用。我在几个地方使用了这种方法,现在我被卡住了。当我查看 Hibernate 5.0.6 的 javadoc 时,没有像 org.hibernate.transaction 这样的东西。有org.hibernate.engine.transaction,但它也不起作用。

当我回到 4.3.1 时,wasRolledBack 正在工作,但这次我无法使用 lucene 库运行项目。我很迷惑。

【问题讨论】:

  • .wasRolledBack 不起作用是什么意思?
  • 找不到符号。似乎它甚至不存在。
  • 请检查我的回答。

标签: java hibernate netbeans jar transactions


【解决方案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枚举常量及说明:

ACTIVE :事务已经开始,但尚未完成。

COMMITTED :交易已成功完成。

COMMITTING :状态码表示一个事务已经开始 两阶段提交协议的第二阶段,但尚未完成 这个阶段。

FAILED_COMMIT:事务试图提交,但是 失败了。

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

NOT_ACTIVE:交易尚未开始

ROLLED_BACK:事务已回滚。

ROLLING_BACK:状态码表示一个事务在 回滚的过程。

【讨论】:

  • 对不起,我有点忙。我看了你的答案,它奏效了。我查看了 javadoc,但似乎我跳过了枚举的事情。谢谢。
猜你喜欢
  • 1970-01-01
  • 2011-11-24
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
  • 2013-05-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多