【问题标题】:hibernate begintransaction throwing exception休眠开始事务抛出异常
【发布时间】:2015-01-08 02:32:21
【问题描述】:

我是休眠的新手。请让我知道下面的代码有什么问题?

f1()
{
   try {
       s = HibernateUtils.getSessionFactory().getCurrentSession();
       tx = s.beginTransaction();
       // do some task
       tx.commit();
   } catch(Exception e) {
       tx.rollback();
       throw e;
   }
}

f2()
{
    try {
       s = HibernateUtils.getSessionFactory().getCurrentSession();
       tx = s.beginTransaction();
       f1();
       tx.commit();
   } catch(Exception e) {
       tx.rollback();
   }
}

f1() 中的开始事务语句抛出异常。提前致谢。

【问题讨论】:

  • 不支持嵌套事务。
  • 通过调用 openSession() 而不是使用当前会话创建新会话来解决此问题。无论如何,谢谢。
  • 刚刚添加了更多细节

标签: hibernate transactions


【解决方案1】:

您不能同时有多个transaction (not session) 处于活动状态,您的方法已经在事务中,您不需要创建一个新方法;删除s.beginTransaction();

OR 可以传递相同的transaction,或者创建一个新的。

这里的概念是 - getCurrentSession() 返回相同并且您调用 beginTransaction() 两次。

【讨论】:

  • 但是在某些情况下,f1() 可以直接从前端或从另一个函数调用/调用,比如 f3(),它没有 beginTransaction()。我们如何处理这些案件?
  • @Varun 您可能需要进行不同的交易,或者通过相同的交易。
  • 我想我明白了。谢谢。
猜你喜欢
  • 1970-01-01
  • 2013-08-18
  • 2014-06-09
  • 2016-09-17
  • 2021-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-14
相关资源
最近更新 更多