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。

提前致谢

4

1 回答 1

1

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

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

JPA 规范不允许在 from 子句中进行子选择,尽管 EclipseLink 确实对此提供了一些支持。不确定您查询是否真的需要这样做,但它似乎比需要的复杂得多。

于 2013-06-19T12:41:59.977 回答