Моя модель выглядит следующим образом (в реальном случае есть методы получение и установка):Слияния отдельностоящий объект удаляет ребенок
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);
ther bar.bazes
поля имеют значение null, а после em.merge bazes удаляются из базы данных.
С дополнительным bars.clear(), но хорошо. Я проверю, была ли эта проблема. – Krever