在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"))


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

10-01 08:53
查看更多