Java 使用内部查询将SQL转换为HQL

Java 使用内部查询将SQL转换为HQL,java,sql,hibernate,postgresql,hql,Java,Sql,Hibernate,Postgresql,Hql,我试图将我的SQL查询重写为HQL友好的格式,但是我失败了,或者没有得到预期的结果 感谢您的帮助 Select * FROM ( SELECT distinct on (iNumber) equipmentTimestamp, name, iNumber, datauserprovidername, latitude, longitude FROM positionview WHERE outbound = false AND refere

我试图将我的SQL查询重写为HQL友好的格式,但是我失败了,或者没有得到预期的结果

感谢您的帮助

Select *
FROM
 (
  SELECT distinct on (iNumber)
  equipmentTimestamp,
  name, 
  iNumber, 
  datauserprovidername, 
  latitude, 
  longitude
  FROM 
  positionview
  WHERE outbound = false
  AND referenceIdentifier is null
  AND responseType = 'XYZ'
  AND equipmentTimestamp >='2013-02-09 10:04:14.476'
  AND equipmentTimestamp <='2016-02-12 10:04:14.476'
  order by iNumber desc
) AS derivedInnerQuery
order by equipmentTimestamp desc;
我可以确认上面的查询得到了我期望的结果,但是HQL只接受WHERE子句中的子查询


简而言之,我希望查询获取每个iNumber的最新位置报告。

首先不需要外部查询,即使在普通SQL中也不需要。但是我怀疑你能否说服你的混淆层=hibernate运行一个包含distinct on的语句,我添加了外部查询,这样我就可以按设备TIMESTAMP desc排序,而不是按iNumber排序descAn按iNumber排序,设备时间戳将实现相同的功能2014-02-18 02:40:00 xyz 1009194 xxx 8.1716666667 98.341 2014-02-18 09:34:00 qaz 1009637 zzz 3.144 100.73466667 2014-02-17 22:04:00 asd 1009699 xxx 6.2905 99.7865它按iMONumber订购,然后按时间戳订购,所以实际上我只有在按iMONumber订购后才能获得时间戳订购