Hibernate 在没有session.save或session.update的情况下使用相同的值休眠更新表

Hibernate 在没有session.save或session.update的情况下使用相同的值休眠更新表,hibernate,Hibernate,在没有session.save或session.update的情况下使用相同的值休眠更新表 我们如何在不更改任何字段值的情况下加载对象(数据库中的一行)并将其保存回去 我们需要hibernate为该行发出一个更新查询,查询值与它加载的值相同。 我们在Hibernate和JDBC之间有一个中间件,它在Hibernate进行更新时更改数据 我们已尝试session.replicate,但它正在删除该对象的所有集合。 i、 e 类用户{ 设置顺序;//反向映射 } 阶级秩序{ 用户; } 在执行ses

在没有session.save或session.update的情况下使用相同的值休眠更新表

我们如何在不更改任何字段值的情况下加载对象(数据库中的一行)并将其保存回去

我们需要hibernate为该行发出一个更新查询,查询值与它加载的值相同。 我们在Hibernate和JDBC之间有一个中间件,它在Hibernate进行更新时更改数据

我们已尝试session.replicate,但它正在删除该对象的所有集合。 i、 e

类用户{
设置顺序;//反向映射
}
阶级秩序{
用户;
}
在执行session.replicate(用户)时,它发出以下SQL命令
更新订单集user=null,其中id=?
这意味着我们正在失去所有的关系

session.save或session.update无法工作,因为在传递到hibernate之前,我们不会更改值


有没有其他方法来强制Hibernate考虑所有字段都被修改,并且应该更新数据库?< /P> < P>你可以实现PrimFrHistListEnter来设置所有的实体来改变和设置<代码>动态更新=“false”<代码>这个类。< /P> 我认为您可以查看并扩展以下内容之一:

DefaultFlushEventListener.java
DefaultFlushEntityEventListener.java

如果不想更改值,为什么要触发更新?还是要使会话对象和数据库对象同步?我们在Hibernate和JDBC之间有一个中间件,它在Hibernate进行更新和选择时更改(加密和解密)数据。对于现有的未加密数据,我们需要此解决方案。我们首先加载,然后再次保存,所以在保存时我们对其进行加密。但所有这些都隐藏在hibernate中,所以它不知道值是否已更改。是否需要执行session.replicate?或者session.update?或者其他任何使上述侦听器工作的方法?仅当实体尚未附加到会话时(当您加载具有相同会话的对象时,情况并非如此),我在文档中未找到任何preflushlistener。
DefaultFlushEventListener.java
DefaultFlushEntityEventListener.java