@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();

Или используя имена методов findAllWithAssignmentsByfindAllWithAbsencesBy также должен работать

Другие вопросы по тегам