Ras*_*hen 5 java spring hibernate clone
我的对象层次结构如下
对象 1 通过 OneToOne 映射到对象 2 对象 2 通过 OneToMany 映射到对象 3
因此,Obj1 将恰好有一个 Obj2,而 Obj2 将有许多 Obj3。
我的要求是克隆层次结构中的所有对象,并对特定变量(例如 String revision;)使用不同的值,比如说 revision 。简单来说,我应该有一个主修订版,另外还有针对三个组织的三个修订版。根据要求,每个组织都会有自己的副本,供其参考和更改。所以基本上我需要克隆对象层次结构,同时将修订版设置为“ORG1”、“ORG2”和“ORG3”。每个对象都会有一个 String 修订版;因此,当我克隆时,我应该能够设置修订版本,例如 obj1.setRevision("ORG1); //当我为组织设置克隆时1.
我使用了下面的机制
Object1 obj1ToBeClone = Object1Service.findObject1ById(1l);
Object1 object1Cloned =(Object1)SerializationHelper.clone(obj1ToBeClone);
object1Cloned.setId(null)
object1Service.saveObject1(object1Cloned);
Run Code Online (Sandbox Code Playgroud)
我使用了 spring 和 hibernate 来定义 dao 层。
然而,我注意到我仍然必须从 object1Cloned 获取 Object2 并将 id 设置为 null 并使用会话保存 obj2 才能克隆 obj2。代码如下
Object2 obj2 = object1Cloned.getObject2();
obj2.setId(null);
Run Code Online (Sandbox Code Playgroud)
这就是我在 Object1 中设置关系的方式。
@OneToOne(fetch = FetchType.EAGER)
@JoinColumn(name ="object2_id")
private Object2 object2;
Run Code Online (Sandbox Code Playgroud)
我的问题是,
如何避免以下情况,这样我就不必遍历对象层次结构并将每个单独对象的 id(也是修订字符串)设置为 null
Object2 obj2 = object1Cloned.getObject2(); obj2.setId(null);
| 归档时间: |
|
| 查看次数: |
521 次 |
| 最近记录: |