当前位置: 首页 > 知识库问答 >
问题:

冬眠保存新的如果脏

曹兴贤
2023-03-14

当对象变脏(已修改)时,是否有方法强制hibernate在saveOrUpdate上保存对象的新实例(新标识符)?这是否可以通过配置或拦截器实现?我有三个实体:

Entity A (has B)
Entity B
Entity C (has B)
Entity B can only be updated through A

基本上,我希望C在创建和保存B时始终保存B的快照,而不是直接引用a引用的B实例。

B应该是可修改的,A应该指向B的最新版本。

我可以通过实现equals方法手动实现这一点,在调用saveOrUpdate()之前检查equals并在必要时将B的id字段置空。在Hibernate中有内置的方式还是更简单的方式?

共有2个答案

江飞章
2023-03-14

尝试读取Hibernate DefaultSaveOrUpdateListener,此侦听器(在配置时)将被调用以完成保存对象的所有繁重工作,它的此侦听器确定需要保存或更新对象的类型。

决定为脏对象保存/更新/创建新对象的逻辑可以在这里完成。

壤驷俊逸
2023-03-14

你可能想给Hibernate拦截器一个快速阅读。

http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/events.html

 类似资料:
  • 另一种方法是使用Crieteria关联,但关联只能与和一起工作! 请在这里帮帮我。

  • 配置类的应用程序侦听器时出现错误 这实际上是我的错误 ** 严重:配置类org的应用程序侦听器时出错。springframework。网状物上下文ContextLoaderListener java。lang.NoClassDefFoundError:javax/servlet/ServletContextListener **在爪哇。lang.ClassLoader。java上的findBoot

  • 我在我的项目中使用Spring引导和Spring数据,我有两个类: 第二类是: 增加任务的方法: 当我试图添加一个新任务时,它在Json对象上面给出了一个错误: {"出发":"fff","到达":"ffff","isFreeWayEnable": false,"车站":[{"id": 1},{"id": 2}]}

  • 我试图在名为Person和Address的两个实体之间建立单向关系,同时保存Person(包含地址集合)获取组织。冬眠TransientObjectException:对象引用未保存的临时实例。 当我更改cascadeType=all时,子对象正在传播。但这里的问题是cascadeType=all Hibernate在删除所属实体时也会尝试删除子实体。我不希望发生这种情况,因为在很多关系中,子实体

  • 问题内容: 这分别是我的hbm和测试代码。我正在使用Spring的HibernateTemplate。我不使用DAO。使用Spring 2.0.7的Hibernate 2.2.5 血红蛋白 测试 超级测试班 错误 问题答案: 好的,根本原因是我对集合的映射无效。感谢这篇关于复合映射的文章 错误: 正确 完整的映射

  • 问题内容: 这些查询翻译器之间有什么区别(对于Hibernate用户而言,我的意思是不同)。互联网上的一些博客说基于ANTLR的翻译器更快。但是我认为,如果其中一个明显更好,那么Hibernate开发人员将删除另一个。那么..有什么区别?为什么我们都拥有它们?在什么情况下我应该选择第一还是第二?在什么情况下我不应该选择其中一位翻译? 问题答案: 这是 内部休眠配置 ; 它将在升级到版本3时实现 。