Spring Data JPA + JpaSpecificationExecutor + EntityGraph
(Использование Spring Data JPA) У меня есть две сущностиParent
& Child
с двунаправленными отношениями OneToMany / ManyToOne между ними. Я добавляю@NamedEntityGraph
для родительского объекта, например, так:
@Entity
@NamedEntityGraph(name = "Parent.Offspring", attributeNodes = @NamedAttributeNodes("children"))
public class Parent{
//blah blah blah
@OneToMany(mappedBy = "parent", fetch = FetchType.LAZY)
Set<Child> children;
//blah blah blah
}
Обратите внимание, что тип выборки для детей Родителя является LAZY. Это специально. Я не всегда хочу загружать детей, когда я опрашиваю отдельного родителя. Обычно я мог бы использовать свой именованный граф сущностей, чтобы, так сказать, загружать детей по требованию. Но.....
Существует особая ситуация, когда я хотел бы запросить одного или нескольких родителей и загрузить их детей. В дополнение к этому мне нужно иметь возможность построить этот запрос программно. Spring Data предоставляетJpaSpecificationExecutor что позволяет создавать динамические запросы, но я не могу понять, как использовать его в сочетании с графами сущностей для активной загрузки дочерних элементов в этом конкретном случае. Это вообще возможно? Есть ли какой-то другой способ загружать многие объекты, используя спецификации?