Repository 클래스에서 사용한 HQL로 작성된 복잡한 쿼리 (다중 조인 및 서브 쿼리 사용)가 있습니다. 아래에있는 것과 유사합니다 -JPA 사용자 정의에 동적 조건 추가 Query
@Repository
public interface DataRepository extends PagingAndSortingRepository<Data,String> {
public List<Data> findByService(@Param("service")Service service, Pageable page);
@Query("SELECT DISTINCT d from Data d "
+" WHERE (d.working in (SELECT d1 from Data d1 "
+" JOIN d1.working d1w "
+" JOIN d1.service s WITH (s in (:serviceList)))"
+" OR d.cleared IS NOT NULL) AND [..several other CRITERIA]")
public Page<Data> findForServices(@Param("serviceList")Set<Service> serviceList, Pageable page);
....
이제 동적으로 기준을 추가해야합니다. 이 기준은 유연성이 뛰어나서 바로 내에서 HQL
에 포함되지 않습니다. 그것은 어쨌든 가능합니까?
나는 인터넷을 통해 선별을하여 dynamic query에 대한 해결책을 발견했습니다. 그러나 나는 그들이 사용자 지정 쿼리가없는 경우, 즉 repository
의 쿼리에 @Query
이없는 경우에만 작동 할 것입니다.
다른 interesting question가 있습니다. 그러나 이는 쿼리 할 단일 테이블이있는 경우에도 적합합니다.
원시 SQL 쿼리로 전환하고 싶지 않습니다. 어떻게 해결할 수 있습니까?
동적으로 생성하기 쉬운 'CriteriaQuery'로 변환 할 수 없습니까? 나는 다른 가능성에 대해 회의적입니다. 정확히 당신이 의미하는 바는 무엇입니까?하지만 쿼리 할 단일 테이블이있는 경우에도 적합합니다. 이 https://stackoverflow.com/a/30436524/6413377의 문제 일 수 있습니까? – pirho