【发布时间】:2011-09-25 11:20:19
【问题描述】:
在包含用户、帖子和消息的自定义博客平台中。 我知道如何使用不同的用户及其帖子计数进行 HQL 查询。还有不同的用户及其消息数。
但如果我将两者与“内部连接”技术结合起来,我会得到相同的帖子和消息计数。我理解为什么会因为加入而发生这种情况。我如何在 HQL 中进行子选择以分别获得两个计数,但作为一次访问数据库?
这是我尝试的最后一个 HQL 查询的示例。
select u.username, count(m), count(p) from User as u
inner join u.Messages as m
inner join u.Posts as p
group by u.id
order by count(m) desc
注意:我将根据网页上的选项更改顺序。
【问题讨论】:
-
在某些时候查看休眠投影以处理此类事情。另外,我不确定 HQL 是否会让你这样做,但你可以像在标准 sql 中那样执行 'count(distinct m.id)' 和 'count(distinct p.id)'。
-
是的,我必须花更多时间研究 Projections。有了 C# LINQ 背景后,我仍在努力解决 LINQ 与 Hibernate 中的 Projections 之间的差异。为这个想法 +1