Я использую JPA 2 с Hibernate 3.6.8 в качестве реализации.
Допустим, у нас есть объект Foo
@Entity
public class Foo {
....
@OneToOne
private Bar bar;
....
}
Мне нужно отделить весь граф объекта от сеанса, и когда я сделал entityManager.detach (foo)
, я был удивлен, что панель
осталась прикрепленной, что, по ИМО, довольно противоречит интуиции.
Читая документацию по EntityManager
, выяснилось, что это ожидаемый случай, поскольку он ничего не упоминает об ассоциациях / дочерних объектах:
Удалите данный объект из контекста сохранения, вызывая управляемый объект отключается. Незаполненные изменения, внесенные в объект, если таковые имеются (включая удаление объекта), не будут синхронизироваться с базой данных. Сущности, которые ранее ссылались на отделенный объект, будут продолжать ссылаться на него.
Я также могу просто вызвать entityManager.detach (foo.getBar ())
, но это означает, что если я добавлю какие-либо ассоциации позже, мне придется убедиться, что они тоже отсоединены вручную.
Есть ли удобный способ добиться этого, не прибегая к размышлениям?