Спящий режим, проблема N 1, принудительная загрузка дочерних объектов

#java #hibernate

Вопрос:

Для примера у меня есть 4 сущности

Родитель -gt; A

Родитель -gt; B -gt;gt; C

 class ParentEntity {  @OneToMany   Listlt;ChildAOfParentEntitygt; childrenAOfParentEntity;  @OneToMany   Listlt;ChildBOfParentEntitygt; childrenBOfParentEntity; }  class ChildAOfParentEntity {  @ManyToOne //by default it is eager  ParentEntity parentEntity }  class ChildBOfParentEntity {  @ManyToOne //by default it is eager  ParentEntity parentEntity  @OneToMany   Listlt;ChildCOfChildBOfParentEntitygt; childrenCOfChildBOfParentEntity; }   class ChildCOfChildBOfParentEntity {  @ManyToOne //by default it is eager  ChildBOfParentEntity childBOfParentEntity }  

и я с нетерпением хочу познакомиться ParentEntity с его отношениями. Для этого join fetch и entity graphs не будет работать из-за этого MultipleBugException . Кроме того, изменение List на Set замаскирует декартову проблему.

Подсказки для запросов тоже не сработали для меня (я подозреваю, что из-за совместимости с PostgreSQL).

Я думал, что родной запрос

 select * from Parent left join ChildAOfParent left join ChildBOfParent left join ChildCOfChildBOfParentEntity cb on cb.child_b_of_parent_id = ChildBOfParent.id  

с готовностью включил бы все ассоциации Sessions .

Но, по-видимому, это не так, поскольку, когда я повторяю ChildBOfParentEntity список, Hibernate выдает дополнительные SQL-запросы. Как можно устранить эту проблему?