【发布时间】:2009-09-17 12:34:57
【问题描述】:
我有这个 hql 查询,效果很好:
select m
from Media m
join m.Productlines p
join m.Categories c
join m.Spaces sp
join m.Solutions so
where m.Uid != 0
and p.Uid in (:productlines)
and c.Uid in (13)
and sp.Uid in (52)
and so.Uid in (15,18)
group by m.Uid
但是现在它需要参数化/动态化,不仅是参数,还有连接(可以只从 Media 中选择,没有任何连接,因此在这种情况下不需要 *.Uid in )。
我不想弄乱 StringBuilder 实例并以这种方式构建 hql 查询,我宁愿使用 Criteria API,但我无法获得
SELECT m.*
....
GROUP BY m.Uid
查询以使用标准。
如果我添加一个
Projections.GroupProperty("Uid")
对于我的查询,休眠选择
SELECT m.Uid
....
GROUP BY m.Uid
这当然是错误的。
之后,我还需要计算查询返回的 unique 行,因为结果是分页的。
所以,我的其他查询非常相似,但我找不到与
等效的条件SELECT COUNT(DISTINCT m.Uid)
这是 HQL:
select count(distinct m.Uid)
from Media m
join m.Productlines p
join m.Categories c
join m.Spaces sp
join m.Solutions so
where m.Uid != 0
and p.Uid in (:productlines)
and c.Uid in (13)
and sp.Uid in (52)
and so.Uid in (15,18)
如何使用 Criteria API 做到这一点?
请 (N)Hibernate 专家 - 帮我解决这个问题,我找不到可行的解决方案。非常感谢任何帮助!
【问题讨论】:
标签: c# nhibernate