postgresql查询的HQL等价物

postgresql查询的HQL等价物,postgresql,hql,Postgresql,Hql,我试图找出我的查询的HQL等价物,它有两个子查询,我试图做的是得到过去6个月的最大数量,然后按月分组,然后得到过去6个月结果的平均值。因为行有version列,所以我还需要获取该特定行的最大版本 这是我的问题,顺便说一下,我正在使用postgres。任何帮助都将不胜感激,因为我真的很难过。提前谢谢 select avg(amount1) as maxField1 from ( select max(amount1) as amount1 from table1 a w

我试图找出我的查询的HQL等价物,它有两个子查询,我试图做的是得到过去6个月的最大数量,然后按月分组,然后得到过去6个月结果的平均值。因为行有version列,所以我还需要获取该特定行的最大版本

这是我的问题,顺便说一下,我正在使用postgres。任何帮助都将不胜感激,因为我真的很难过。提前谢谢

select avg(amount1) as maxField1 from 
 (
      select max(amount1) as amount1 from table1 a
      where a.id = :id
      and a.date between :startDate
      and :endDate
      and a.version =
      (
           select max(b.version) from table1 b
           where a.id = b.id
           and a.date = b.date
      )
      group by to_char(a.date, 'YYYYMM')
 );

HQL和JPA也只允许在SELECT或WHERE子句中进行子查询。不允许FROM子句中的子查询,请参阅:。您需要重写这个查询,将子查询移动到WHERE clasue,但在这种情况下可能非常困难,甚至不可能。为什么不直接使用本机查询,这是最简单的选择?嗨,krokodilko,我按照你的建议使用了本机查询并使用了@sqlresultsmapping(name=“…Result”,classes={@ConstructorResult(..),谢谢你的帮助!