Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.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 使用不同版本在hibernate中克隆对象层次结构(包括一对一、一对多递归)_Java_Spring_Hibernate_Clone - Fatal编程技术网

Java 使用不同版本在hibernate中克隆对象层次结构(包括一对一、一对多递归)

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由OneToOne映射到Object2 Object2由OneToMany映射到Object3

因此,Obj1将只有一个Obj2,而Obj2将有多个Obj3

我的要求是克隆层次结构中的所有对象,并将不同的值指定给特定变量(例如String revision;),比如revision。简单地说,我应该有一个主版本,另外三个版本指向三个组织。根据要求,每个组织将有自己的副本,在其中引用并进行更改。因此,基本上我需要克隆对象层次结构,同时将修订设置为“ORG1”、“ORG2”和“ORG3”。每个对象都有一个 字符串修订; 因此,当我进行克隆时,我应该能够设置修订,如 obj1.setRevision(“ORG1);//当我为组织1设置克隆时

我使用了下面的机制

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;
我的问题是,

  • 是否需要获取对象层次结构中的所有对象并进行设置 将id设置为null,使用setID(null)生成新对象 在数据库中
  • 你能给我一个办法把修订设置为a吗 特定字符串,如“ORG1”、“ORG2”等,以便将其设置为 到对象层次结构的所有对象
  • 如何避免以下情况,以便我不必遍历对象层次结构,并将每个对象的id(以及修订字符串)设置为null

    Object2 obj2=object1Cloned.getObject2(); obj2.setId(空)


  • 只是想知道我们如何使用Hibernate克隆具有关系的对象。。