我有一个for循环调用另一个方法,它使用hibernate将数据保存到临时表。在for循环之后,我有一个代码调用存储过程来将从临时表保存的数据复制到实时表。但是,即使用于保存数据的代码在存储过程之前,也会在hibernate开始保存数据之前首先调用存储过程。因此,当我查询实时表时,数据不存在。有没有办法在调用存储过程之前等待hibernate完成更新? Hibernate似乎在更新数据库之前等待for循环先完成,这可能就是为什么当我调用存储过程时结果是空的。任何人都可以帮我解决这个问题吗?非常感谢。
这是我的代码:
for(Object1 obj: obj1List){
saveHibernateObj(obj);
}
getCurrentSession().createSQLQuery("Call update_object()").executeUpdate();
答案 0 :(得分:2)
您应该在调用存储过程之前调用session.flush()方法进行hibernare会话刷新