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