Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 休眠保存新的如果脏_Java_Hibernate - Fatal编程技术网

Java 休眠保存新的如果脏

Java 休眠保存新的如果脏,java,hibernate,Java,Hibernate,当对象变脏(已修改)时,是否有方法强制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方法手动实现这一点,在调

当对象变脏(已修改)时,是否有方法强制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拦截器

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


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

如何确定实体是否来自事件对象?有一个名为isDirty()的方法,请尝试。