我需要在事务中两次保存相同的对象,但是hibernate总是只有一个sql更新,任何方式都可以吗?这是代码:
....
session.beginTransaction();
Student s = session.get(Student.class, id);
// (1) first save
s.setSequenceNum(10);
session.saveOrUpdate(s);
// (2) second save
s.setSequenceNum(9);
session.saveOrUpdate(s); // save again
session.getTransaction().commit();
session.close();
Run Code Online (Sandbox Code Playgroud)
hibernate会忽略第一个,而第二个只有一个sql更新.我怎样才能让hibernate同时执行两个sql更新?我需要这个,因为这是我们项目的要求.
saveOrUpdate对于附加的实例来说完全没有必要.Hibernate将自动保持附加对象的状态
附加对象是您从会话中检索到的对象(来自对get,load或查询的调用),或者您通过持久,保存,更新或合并(在后一种情况下,已传递)进行持久化的对象对象未附加,但返回的对象是).
那为什么saveOrUpdate有用呢?使瞬态或分离对象持久化是有用的,即一个未附加到会话的对象,因为它是新的,或者因为它先前已附加,但在会话关闭时变得分离.
Hibernate的想法是仅在必要时,在最近可能的时间刷新修改后的状态(即执行更新SQL查询).这样,它可以避免不必要的更新,从而使代码更有效.除非您在两次更新之间的同一事务中执行本机SQL查询,否则您的第一次更新是不必要的.为什么要保持中间状态?
| 归档时间: |
|
| 查看次数: |
10599 次 |
| 最近记录: |