SQL查询到JPQL

时间:2013-06-19 05:50:22

标签: sql jpa

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。

提前致谢

1 个答案:

答案 0 :(得分:1)

请注意,JPA允许您执行本机SQL查询。对于这种复杂的事情,这可能是最好的。

否则,你需要考虑对象,而不是数据,你的对象模型是什么,你想要回到什么对象?首先用英语编写查询,然后从那里开始。

JPA规范不允许在from子句中进行子选择,尽管EclipseLink确实对此有一些支持。不确定你的查询确实需要这样做,但它看起来要复杂得多。