Java 将sql查询上的本机distinct转换为hql
我想将以下本机sql查询转换为hql查询。我浏览了hibernate文档,他们给出了关于具有不同对象/字段的查询的示例,但没有给出关于“distinct on”用法的示例。有人能帮我解决这个问题吗 我的sql查询是:Java 将sql查询上的本机distinct转换为hql,java,sql,hibernate,hql,Java,Sql,Hibernate,Hql,我想将以下本机sql查询转换为hql查询。我浏览了hibernate文档,他们给出了关于具有不同对象/字段的查询的示例,但没有给出关于“distinct on”用法的示例。有人能帮我解决这个问题吗 我的sql查询是: 在(mr.id)mr上选择distinct。* 从回扣。先生回扣先生 就我所知,mr_先生的起始日期是这么简单的。您可以在中找到更多信息。嗯,上的distinct似乎是一个特定于数据库的扩展,因此不是标准的SQL。正因为如此,HQL无法提供完全相同的功能(在不支持该功能的数据库上
在(mr.id)mr上选择distinct。*
从回扣。先生回扣先生
就我所知,mr_先生的起始日期是这么简单的。您可以在中找到更多信息。嗯,
上的distinct似乎是一个特定于数据库的扩展,因此不是标准的SQL。正因为如此,HQL无法提供完全相同的功能(在不支持该功能的数据库上,您如何自动转换该功能?)
因此,最好的选择可能是将查询更改为仅使用标准SQL语法。有关一些提示,请参见此处:
你好,伊万东根,谢谢你的回复。事实上,您给出的示例是用于获取不同的对象,但这里的问题是基于不同的字段获取对象。第一个链接是关于不同的列,但可能这不是您想要的。嗨,托马斯,谢谢您的回答。是的,我正在继续使用hibernate原生sql来解决这个问题。但我只想知道,如果在hibernate中使用本机sql而不是hql,性能会下降多少。
select distinct on(mr.id) mr.*
from rebate.mr_rebates mr
where mr.mr_start_date <= now()
order by mr.id, mr.mr_start_date desc