Spring Data JPA findAll с другим EntityGraph - PullRequest
0 голосов
/ 04 мая 2020

в репозитории Spring Data JPA мне нужно указать несколько методов, которые делают одно и то же (например, 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?

Спасибо

Габриэле

1 Ответ

0 голосов
/ 04 мая 2020

Вы можете использовать EntityGraphJpaSpecificationExecutor для передачи различных entitygraph в зависимости от вашего метода.

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

}

В вашем классе обслуживания вы можете вызвать find все с графом сущностей.

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

Как и выше, вы можете использовать другой граф сущностей, в зависимости от ваших требований.

...