当对象变脏(已修改)时,是否有方法强制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中有内置的方式还是更简单的方式?
尝试读取Hibernate DefaultSaveOrUpdateListener,此侦听器(在配置时)将被调用以完成保存对象的所有繁重工作,它的此侦听器确定需要保存或更新对象的类型。
决定为脏对象保存/更新/创建新对象的逻辑可以在这里完成。
你可能想给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时实现 。