@NamedEntityGraphs на findAll () - PullRequest
       18

@NamedEntityGraphs на findAll ()

0 голосов
/ 29 января 2019

Я использую @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 не может разрешить имя метода.

IsЕсть ли возможность получить такие методы?

Спасибо

Матиас

1 Ответ

0 голосов
/ 29 января 2019

Добавьте @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 также должно работать

...