在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> {
}
在您的服务类中,您可以使用实体图调用全部查找。
List<User> users = userRepository.findAll(specification, new NamedEntityGraph(EntityGraphType.FETCH, "graphName"))
像上面一样,您可以根据需要使用不同的不同实体图。