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"))
像上面一样,您可以根据您的要求使用不同的实体图。
在 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"))
像上面一样,您可以根据您的要求使用不同的实体图。