spring-boot - findAll() 上的 @NamedEntityGraphs

标签 spring-boot spring-data-jpa entitygraph

我在我的应用程序中使用 @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 无法解析该方法名称。

有没有可能得到这样的方法?

谢谢

马蒂亚斯

最佳答案

添加 @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也应该工作

关于spring-boot - findAll() 上的 @NamedEntityGraphs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54423774/

相关文章:

java - 由 : java.net.URISyntaxException 引起:索引 111 处的查询中存在非法字符:由于 URI 中的 {} 导致错误

jpa - 空列表时的表达式 `in`(spring data jpa规范)

java - JPA查询: join a subquery with grouping condition

jpa - Spring Data JPA 和 NamedEntityGraphs

spring-boot - Spring Boot/Kotlin 和通过内容协商进行版本控制 : correct approach?

java - 如何使用 Spring Boot 和 Angular 自动运行日常 PL/SQL 脚本(Oracle)?

JPA 实体图 : which join types?

java - 如何在 JPA @Query 注释中使用 IN 子句

mysql - SpringBoot 的 DataJpaTest 与 Flyway

java - 方法返回后尝试事务提交时抛出 NullPointerException