java - 阻止 Hibernate 在关联集合中保留更改

标签 java hibernate

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

当然,正如 hibernate documentation 中所写。当刷新 session 时,即使我不在找到的对象中调用 Session#save,更改也会自动保留。

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

我怎样才能做到这一点?

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

有什么建议吗?

最佳答案

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

关于java - 阻止 Hibernate 在关联集合中保留更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11439567/

相关文章:

java - Vector 和 Hashtable 在集合中如何保证线程安全?

java - 从 EclipseLink 切换到 Hibernate

java - 我的浏览器中显示的可分页数据错误

java - 将 OpenSessionInViewInterceptor 与 Hibernate 和 JSF 2 结合使用

java - 在java中实现抽象方法/类

java - 无法获取数组中的第二大值

java - 编写一个 Java 8 谓词来过滤不在范围内的值

hibernate - 具有超过 1 个继承级别的 @MappedSuperclass 在实体映射中抛出重复列异常

java - JPA持久化 CrudRepository.save() 语法错误

java - 通过 JMeter 正则表达式解析 HTML