Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将Postgres查询转换为JPQL_Java_Postgresql_Hibernate_Jpql - Fatal编程技术网

Java 将Postgres查询转换为JPQL

Java 将Postgres查询转换为JPQL,java,postgresql,hibernate,jpql,Java,Postgresql,Hibernate,Jpql,如何将下面的PostreSQL查询转换为JPQL?我主要坚持用行数、分区和when case 我们可以看看你们目前的情况吗?从产品p左键选择p,c左键加入选择c.Product.id,c.status,c.startDate行号,按产品id划分,按案例状态“过期”,然后2个其他1个结束asc,开始日期描述为合同c行号,按p.id上的c.Product.id c=c.Product.id,c.row行号=1订单按p.id,c.起始日期@尼莱什贾达夫,恐怕这行不通。在JPQL中,您只能连接实体而不能

如何将下面的PostreSQL查询转换为JPQL?我主要坚持用行数、分区和when case


我们可以看看你们目前的情况吗?从产品p左键选择p,c左键加入选择c.Product.id,c.status,c.startDate行号,按产品id划分,按案例状态“过期”,然后2个其他1个结束asc,开始日期描述为合同c行号,按p.id上的c.Product.id c=c.Product.id,c.row行号=1订单按p.id,c.起始日期@尼莱什贾达夫,恐怕这行不通。在JPQL中,您只能连接实体而不能连接子查询,并且只能通过映射的关系路径f.ex进行连接。如果产品在合同属性上有@manytone合同,您可以使用。。。从产品p加入p合同c…-请注意,未指定ON。此外,JPQL中不支持窗口函数。@POZ非常感谢您提供的信息。@NileshJadav尽管您的问题在我看来是一个经典问题-其中一些解决方案可能在JPQL中有代表性。
select p, c from  product p left join 
  (
    select 
    c.product_id, c.id, c.status, c.start_date,
    row_number() over (partition by product_id order by (case status when 'EXPIRED' then 2 else 1 end) asc, start_date desc) as row_number
    from contract c
    order by product_id
  ) c
  on
  p.id = c.product_id and c.row_number = 1 
  order by p.id, c.start_date;