2015-02-03 2 views
1

아래 쿼리를 QueryDSL로 변환하려고하면 하위 쿼리 결과 집합에서 실제 결과를 얻는 방법을 모르겠습니다. 하위 쿼리 결과 집합에 따라 그룹화하고 실제 결과 집합을 채 웁니다.네이티브 쿼리를 queryDSL로 변환하는 방법. 여기에는 실제 결과 집합이 채워지는 하위 쿼리가 있습니다.

select ha.host_model, ha.MACHINE_TYPE, ha.END_OF_LIFE_DT, 
        ha.END_OF_SERVICE_LIFE_DT, 
        ha.END_OF_SALE_DT, 
        ha.END_OF_ENGINEERING_DT, 
        ha.SOFT_MAINTENANCE_END_DT, 
        ha.CONTRACT_RENEWAL_END_DT from (
    SELECT distinct h.host_id, 
        h.host_model, 
        h.MACHINE_TYPE, 
        m.manufacturer_name, 
        o.host_platform, 
        e.END_OF_LIFE_DT, 
        e.END_OF_SERVICE_LIFE_DT, 
        e.END_OF_SALE_DT, 
        e.END_OF_ENGINEERING_DT, 
        e.SOFT_MAINTENANCE_END_DT, 
        e.CONTRACT_RENEWAL_END_DT 
       FROM tf_host h 
        JOIN tf_eol e 
         ON h.eol_id = e.eol_id 
        JOIN tf_manufacturer m 
         ON h.manufacturer_id = m.manufacturer_id 
        JOIN tf_os o 
         ON h.os_id = o.os_id 
       WHERE HOST_SERVERFLAG = 0) ha group by ha.host_model, ha.MACHINE_TYPE, ha.END_OF_LIFE_DT, 
        ha.END_OF_SERVICE_LIFE_DT, 
        ha.END_OF_SALE_DT, 
        ha.END_OF_ENGINEERING_DT, 
        ha.SOFT_MAINTENANCE_END_DT, 
        ha.CONTRACT_RENEWAL_END_DT 
       order by ha.host_model; 

답변

1
PathBuilder

는 사용하고 get 방법을 사용하여 서브 쿼리의 요소를 선택한다. 경로를 PathBuilder<Tuple> ha = new PathBuilder<>(Tuple.class, "ha")으로 선언하십시오. 하위 쿼리에 별칭 ha을 작성하는 것으로 생각하십시오. 다음으로 하위 쿼리 개체의 .as(ha)을 사용하여 하위 쿼리를 경로의 별칭으로 지정합니다. 마지막으로 ha.get(tableName.columnName)을 사용하여 열을 참조하십시오.