具有相同值的Hibernate更新表,没有session.save或session.update
我们如何加载对象(数据库中的一行)并将其保存回来而不更改任何字段值。
我们需要hibernate为该行发出一个UPDATE查询,并且加载的值相同。 我们在Hibernate和JDBC之间有一个中间件,它可以改变数据,而hibernate正在进行UPDATE。
我们尝试过session.replicate但它正在删除该对象的所有集合。 即
class User{
Set<Order> orders; //inversely mapped
}
class Order{
User user;
}
while doing session.replicate(user) it is issueing a following SQL
update ORDER set user=null where id=?
这意味着我们正在失去所有关系。
session.save或session.update不会工作,因为我们在传递给hibernate之前没有更改值。
还有其他方法可以强制hibernate考虑修改所有字段,并且应该更新数据库吗?
答案 0 :(得分:0)
您可以实现preflushListener来设置所有要更改的实体,并为此类设置dynamicupdate="false"
。
我认为您可以查看并扩展其中一个:
DefaultFlushEventListener.java
DefaultFlushEntityEventListener.java