#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-запросы. Как можно устранить эту проблему?