@NamedEntityGraphs на findAll()
Я использую @NamedEntityGraph в своем приложении
@NamedEntityGraphs({
@NamedEntityGraph(name = "graph.Employee.assignments", attributeNodes = @NamedAttributeNode("assignmentProjectEmployeeSet")),
@NamedEntityGraph(name = "graph.Employee.absences", attributeNodes = @NamedAttributeNode("absences"))
})enter code here`public class Employee {
И когда я использую его в хранилище через
@EntityGraph(value = "graph.Employee.assignments", type = EntityGraph.EntityGraphType.FETCH)
List<Employee> findAll();
Я получил все результаты, как и ожидалось. Но мне понадобится несколько версий findAll() для разных ситуаций. Что-то вроде
@EntityGraph(value = "graph.Employee.assignments", type = EntityGraph.EntityGraphType.FETCH)
List<Employee> findAllWithAssignments();
@EntityGraph(value = "graph.Employee.absences", type = EntityGraph.EntityGraphType.FETCH)
List<Employee> findAllWithAbsences();
Но если я пытаюсь определить новое имя метода в хранилище, я получаю ошибку контекста приложения, так как Spring не может разрешить имя метода.
Есть ли возможность получить такие методы?
Спасибо
Матиас
1 ответ
Решение
Добавлять @Query
вашим методам, которые выберут все Employee
s:
@Query("select e from Employee e")
@EntityGraph(value = "graph.Employee.assignments", type = EntityGraph.EntityGraphType.FETCH)
List<Employee> findAllWithAssignments();
@Query("select e from Employee e")
@EntityGraph(value = "graph.Employee.absences", type = EntityGraph.EntityGraphType.FETCH)
List<Employee> findAllWithAbsences();
Или используя имена методов findAllWithAssignmentsBy
findAllWithAbsencesBy
также должен работать