我试图使用NHibernate的Criteria API表示SQL查询,但由于遇到问题,因为我正在以数据库为中心的方式进行思考,而NHibernate以对象为中心。

SQL(效果很好):

select outerT.id, outerT.col1, outerT.col2, outerT.col3
from tbl outerT
inner join
    (select max(innerT.id)
     from tbl innerT
     group by innerT.col1) grpT
on outerT.id = grpT.id

本质上,这是表针对自身子集的自联接。我想我可以尝试将自联接变成一个限制:
select outerT.id, outerT.col1, outerT.col2, outerT.col3
from tbl outerT
where outerT.id in (select max(innerT.id) from tbl innerT group by innerT.col1)

但是我也不知道如何使用NHibernate来表达这一点。我正在与DetachedCriteria的ProjectionList进行斗争,并希望在按max(id)分组时仅选择col1

非常感谢您的建议!

最佳答案

我不知道该将其发布为新答案还是将其添加为对原始问题的评论,但是我认为我已经在该线程中解决了类似的问题:

Selecting on Sub Queries in NHibernate with Critieria API

关于nhibernate - 如何使用NHibernate表示加入分组的子查询?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4128686/

10-10 21:43