org.hibernate.exception.LockAcquisitionException:无法提取ResultSet

时间:2014-07-10 11:38:48

标签: java mysql sql hibernate stored-procedures

我创建了一个hibernate会话并为该会话启动了一个事务。

之后,在该会话中逐个多次调用存储过程。在其中一个电话中我遇到了这个错误

  

org.hibernate.exception.LockAcquisitionException:无法提取ResultSet

在所有过程调用之后,事务被提交。

在这种情况下会发生什么?

我观察到的是,只有一些条目(与存储过程调用相关)反映在MySQL数据库中,而其他条目则没有。

除了对存储过程失败的调用之外,理想的行为是否应该是所有条目都反映在数据库中?

1 个答案:

答案 0 :(得分:0)

我想我无法理解你的意思。我仍然想说明一点,以防他们可以帮助你。

  1. 理想情况下,每个数据库通信都是在事务中进行的。
  2. hibernate中的会话不是线程安全对象,在与数据库进行每次通信后都会丢弃。除非需要,否则会话将不会获取JDBC连接或数据源。在使用之前,它不会消耗任何资源。
  3. 如果在事务中发生任何错误/异常,则在理想情况下回滚整个事务。
  4. 如果您有嵌套交易

    What happens depends on whether this is a nested transaction:
    
    If it is not, then eventually the transaction times out and rolls back.
    If it is, the parent transaction will see that a child transaction has not committed when it commits itself. This will result in a rollback of the entire transaction.