首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >您能根据匹配限制来订购hql结果吗?

您能根据匹配限制来订购hql结果吗?
EN

Stack Overflow用户
提问于 2009-02-05 22:09:39
回答 2查看 962关注 0票数 2

我有一个对象狗,它包含一组DogMetadata。

每个DogMetadata有两个值:一个字符串("desc")和一个int (“秩”)。

对狗的描述有不同的排名,如:“小”为5,“毛茸茸”为2,“友好”为9,“达利”为11,“狗”为22。

我需要搜索基于的任何的狗的desc值(例如,找到“毛茸茸”或“小”狗)。

此查询返回匹配的狗,但它们没有任何顺序。

代码语言:javascript
复制
select distinct Dog as d
left join d.dogMetadata as dMeta
where ( (dMeta.desc = 'furry') OR (dMeta.desc = 'small') )

如何根据任何匹配的DogMetadatas的“秩”值排序匹配的Dog对象的列表?

我已经像狗一样工作了一整天(试着“按组”和“按顺序”),但我想我已经把树弄错了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-02-06 17:52:49

此查询不起作用:

代码语言:javascript
复制
select d from Dog as d
left join fetch d.dogMetadata as dMeta
where ( (dMeta.desc = 'furry') OR (dMeta.desc = 'small') )
group by d
order by sum(dMeta.rank) desc

因为这个bug:http://opensource.atlassian.com/projects/hibernate/browse/HHH-1615?focusedCommentId=24530#action_24530

我通过只请求Dog ID来解决这个限制:

代码语言:javascript
复制
select d.id from Dog as d
left join fetch d.dogMetadata as dMeta
where ( (dMeta.desc = 'furry') OR (dMeta.desc = 'small') )
group by d.id
order by sum(dMeta.rank) desc
票数 1
EN

Stack Overflow用户

发布于 2009-02-05 23:34:39

只是从我的头顶(实际上没有在HQL验证它)

代码语言:javascript
复制
from Dog d where d.dogMetadata.desc in ('furry','small','whatever') order by d.dogMetadata.rank 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/518197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档