Java 使用不同版本在hibernate中克隆对象层次结构(包括一对一、一对多递归)
我有一个如下的对象层次结构 Object1由OneToOne映射到Object2 Object2由OneToMany映射到Object3 因此,Obj1将只有一个Obj2,而Obj2将有多个Obj3 我的要求是克隆层次结构中的所有对象,并将不同的值指定给特定变量(例如String revision;),比如revision。简单地说,我应该有一个主版本,另外三个版本指向三个组织。根据要求,每个组织将有自己的副本,在其中引用并进行更改。因此,基本上我需要克隆对象层次结构,同时将修订设置为“ORG1”、“ORG2”和“ORG3”。每个对象都有一个 字符串修订; 因此,当我进行克隆时,我应该能够设置修订,如 obj1.setRevision(“ORG1);//当我为组织1设置克隆时 我使用了下面的机制Java 使用不同版本在hibernate中克隆对象层次结构(包括一对一、一对多递归),java,spring,hibernate,clone,Java,Spring,Hibernate,Clone,我有一个如下的对象层次结构 Object1由OneToOne映射到Object2 Object2由OneToMany映射到Object3 因此,Obj1将只有一个Obj2,而Obj2将有多个Obj3 我的要求是克隆层次结构中的所有对象,并将不同的值指定给特定变量(例如String revision;),比如revision。简单地说,我应该有一个主版本,另外三个版本指向三个组织。根据要求,每个组织将有自己的副本,在其中引用并进行更改。因此,基本上我需要克隆对象层次结构,同时将修订设置为“ORG1
Object1 obj1ToBeClone = Object1Service.findObject1ById(1l);
Object1 object1Cloned =(Object1)SerializationHelper.clone(obj1ToBeClone);
object1Cloned.setId(null)
object1Service.saveObject1(object1Cloned);
我使用了spring和hibernate来定义dao层
然而,我注意到我仍然需要从object1Cloned获取Object2,并将id设置为null,然后使用会话保存ObjectJ2,以便克隆ObjectJ2
Object2 obj2 = object1Cloned.getObject2();
obj2.setId(null);
这就是我在Object1中设置关系的方式
@OneToOne(fetch = FetchType.EAGER)
@JoinColumn(name ="object2_id")
private Object2 object2;
我的问题是,
只是想知道我们如何使用Hibernate克隆具有关系的对象。。