2013-06-19 2 views
0
SELECT * 
FROM (SELECT van_num    vn, 
       berth_from    berth, 
       first_line_ashore_time first 
     FROM iportman.ipt_pilotagerecord pilot 
     WHERE (Month(first_line_ashore_time) = 6 
       AND Year(first_line_ashore_time) = 2013) 
       AND operation_movement = 'BERTHING') tab1 
     LEFT JOIN (SELECT van_num   vn, 
         berth_from   berth, 
         last_line_cast_off last 
        FROM iportman.ipt_pilotagerecord pilot 
        WHERE (Month(last_line_cast_off) = 6 
          AND Year(last_line_cast_off) = 2013) 
         AND operation_movement = 'UNBERTHING') tab2 
       ON tab1.vn = tab2.vn 

JPQL에서 위의 쿼리를 실행하고 싶습니다. 우리는 JPA 2.0 (Eclipselink 2.4.2)을 사용하고 있습니다. SQL 쿼리를 JPQL로 변환하는 데 도움을주십시오.JPQL에 SQL 쿼리

미리 감사드립니다.

+0

서브 쿼리는 JPQL의'SELECT' 절과'WHERE' 절에서만 허용됩니다. 따라서이 SQL을 JPQL로 직접 변환 할 가능성은 거의 없습니다. – Lion

+0

다른 대안을 제안하십시오 –

+0

제 생각에는 원하는 결과 집합을 가져올 수있는 데이터베이스 시스템 (즉,이 뷰에 직접이 SQL을 작성할 수 있음)에서 뷰를 작성한 다음이 뷰를 통해 쿼리 할 수 ​​있습니다 JPQL. – Lion

답변

1

JPA를 사용하면 원시 SQL 쿼리를 실행할 수 있습니다. 이 무언가를 위해, 아마 아마 최상이다.

그렇지 않으면 개체가 아닌 데이터, 개체 모델 및 개체를 고려해야합니다. 먼저 영어로 쿼리를 작성하고 거기에서부터 시작하십시오.

JPA 스펙은 from 절에서 하위 선택을 허용하지 않지만 EclipseLink는이를 지원합니다. 쿼리가 실제로이 작업을 수행해야 할 필요가 있는지 확실하지 않지만 필요한 것보다 훨씬 복잡합니다.