Spring 具有不同 EntityGraph 的数据 JPA findAll

Spring Data JPA findAll with different EntityGraph

在 Spring Data JPA Repository 我需要指定多个方法来做同样的事情(例如 findAll)但指定不同的@EntityGraph 注释(目标是优化方法以用于不同的服务) .

Es。

@Repository
public interface UserRepository extends JpaSpecificationExecutor<User>, JpaRepository<User, Long> {

@EntityGraph(attributePaths = { "roles" })
findAll[withRoles](Specification sp);

@EntityGraph(attributePaths = { "groups" })
findAll[withGroups](Specification sp);

etc...
}

在Java中我们不能多次使用相同的方法签名,那么如何管理呢?

不使用 JPQL 可以吗?

谢谢,

加布里埃尔

您可以使用 EntityGraphJpaSpecificationExecutor 根据您的方法传递不同的 entitygraph

@Repository
public interface UserRepository extends JpaSpecificationExecutor<User>, JpaRepository<User, Long>, EntityGraphJpaSpecificationExecutor<User> {

}

在您的服务class中,您可以使用实体图调用find all。

List<User> users = userRepository.findAll(specification, new NamedEntityGraph(EntityGraphType.FETCH, "graphName"))

像上面一样,您可以根据您的要求使用不同的实体图。