【问题标题】:how to check if hibernate update has completed?如何检查休眠更新是否已完成?
【发布时间】:2015-08-03 15:52:49
【问题描述】:

我有一个 for 循环,它调用另一个使用休眠将数据保存到临时表的方法。在 for 循环之后,我有一段代码调用存储过程来将保存的数据从临时表复制到活动表。然而,存储过程在hibernate开始保存数据之前首先被调用,即使保存数据的代码在存储过程之前也是如此。因此,当我查询实时表时,数据不存在。在我调用存储过程之前,有没有办法等待休眠完成更新? Hibernate 似乎在更新数据库之前先等待 for 循环完成,这可能就是为什么当我调用存储过程时结果为空的原因。任何人都可以帮助我解决这个延迟问题吗?非常感谢。

这是我的代码:

for(Object1 obj: obj1List){
saveHibernateObj(obj);
}

getCurrentSession().createSQLQuery("Call update_object()").executeUpdate();

【问题讨论】:

  • saveHibernateObj() 是如何工作的?您能否让 saveHibernateObj() 返回成功或失败值 (0,1),然后仅在结果成功 (0) 时调用您的存储过程?
  • 我这样做了,但没有奏效。丹尼尔的回答奏效了。感谢 SpaceCowboy 的评论。

标签: java mysql hibernate stored-procedures


【解决方案1】:

你应该在调用存储过程之前调用 session.flush() 方法来刷新休眠会话

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-04
    • 2017-11-13
    • 1970-01-01
    • 2015-10-18
    • 2014-07-22
    • 1970-01-01
    • 1970-01-01
    • 2011-01-06
    相关资源
    最近更新 更多