Hiberate:无法从数据库重新加载实体

时间:2016-01-22 13:57:32

标签: java hibernate entity

我已经在这个问题上挣扎了几个小时,可以帮忙。

  1. 客户端发送包含列表的对象;
  2. 列表中的一个对象已在客户端上修改;
  3. 在某些情况下,我不希望将修改后的实体持久化到数据库,我希望保留原始数据库值。
  4. 我尝试了以下各种尝试来清除(),刷新()和flush()会话:

    iterator.add()

    但是,无论我尝试什么,我总是将客户端的值保存到数据库中。当我在<img src="..." class="img-responsive" alt="Responsive image"> 之后添加断点时,我可以检查数据库值是否在那时没有更新,因此我知道如果我可以从DB加载实体,那么我将拥有我想要的值。

    我感觉有点支持!

1 个答案:

答案 0 :(得分:1)

我不知道我是否在这里得到了整个场景。那些经过修改的“entitiesFromClient”是否附加到Hibernate会话?如果是,则在您“驱逐”它们之前,更改可能会自动刷新到数据库。 设置MANUAL刷新模式可以帮助您避免自动行为。 首先,我将启用Hibernate SQL日志以更准确地查看正在发生的事情。请参阅Enable Hibernate logging

如果此代码在事务中运行,则检查另一个会话中的数据库(在断点处停止时)将无济于事。即使更改已在数据库中刷新,在事务提交之前也不会看到它。