0
我的模型看起来像这样(在现实情况下,有getter和setter):合并分离对象删除儿童
class Foo {
Set<Bar> bars;
void attachBars(Set<Bar> bars){
this.bars = bars;
for(Bar bar : bars)
bar.foo = this;
}
}
class Bar {
Set<Baz> bazes;
}
class Baz {
}
然后我执行:
Foo foo = e.find(Foo.class, "id");
Hibernate.initialize(foo.bars);
em.detach(foo)
Foo foo2 = e.find(Foo.class, "id");
doSomeChanges(foo2);
foo2.attachBars(foo.bars);
我看到的在调试器:
之前attachBars(foo.bars);
bar.bazes
字段不可访问由于LazyInitializationException
之后attachBars(foo.bars);
其中bar.bazes
字段设置为空,并且在em.merge之后,将bazes从数据库中删除。
带附加bars.clear(),但确定。我会检查这是否是问题。 – Krever 2014-11-05 14:08:21