Как избежать дублирования кода в репозиториях JPA? - PullRequest
0 голосов
/ 15 января 2019

В моем проекте jHipster есть много таблиц, и для каждой из них создается интерфейс репозитория. Мне нужно реализовать мультитенантность, поэтому я собираюсь добавить несколько методов, один из параметров которых DepartmentId, например:

@Repository
public interface ClientRepository extends JpaRepository<Client, Long>, JpaSpecificationExecutor<Client> {

    @Query( value = "select * from client c  where department_id in (select id  from department where path like %?1%)" ,nativeQuery = true)
    Page<Client> findAllBydepartmentId(@Param("departmentId") String departmentId, Pageable pageable) ;

    @Query( value = "select * from client c  where client_id = ?2 and department_id in (select id  from department where path like %?1%)" ,nativeQuery = true)
    Page<Client> findAllBydepartmentId(@Param("departmentId") String departmentId, @Param("clientId"), Pageable pageable);

    @Query( value = "delete  from client c  where client_id = ?2 and department_id in (select id  from department where path like %?1%)" ,nativeQuery = true)
    Page<Client> findAllBydepartmentId(@Param("departmentId") String departmentId, @Param("clientId"), Pageable pageable);

Я должен сделать это для каждой сущности, так как избежать написания большого количества повторяющегося кода?

...