阻止hibernate持久保存关联集合中的更改

时间:2012-07-11 18:59:14

标签: java hibernate

我通过hibernate搜索加载一些hibernate对象,然后在UI中显示它们。在那里,我们的用户选择一个对象并从@ManyToMany关联中删除一些元素。

当然,正如在hibernate documentation中写入会话时,即使我没有在找到的对象中调用Session#save,也会自动保留更改。

但这不是我需要的行为。我需要我的用户从关联中删除对象,但只是暂时的,仅用于从修改的对象生成报告而不更改我的数据库。因此,关联中删除的对象不会显示在我的报告中。

我怎样才能实现这一目标?

我在考虑将关联对象标记为Cloneable并构建一个新实体并在那里进行更改,因为此特定UI中的所有操作都是只读的。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

使用cascade="evict"标记集合。然后根据需要删除对象,生成报告,然后在刷新之前evict()对象。