Nhibernate简单的自我加入

时间:2011-10-30 13:23:59

标签: c# hibernate nhibernate hql criteria

我有一个包含这些字段的表格:

ID (Primary key)
Name 
Some more data fields

我想编写一个查询,给定一个Name会给我所有ID大于那个名称的行的行。

(是的我知道这个名字并不是唯一的...在系统中。)

我想要类似的东西:

select *
From SomeTable as x
WHERE x.ID> (Select ID from SomeTable as y where y.Name LIKE :param)

或:

SELECT x
FROM SomeTable as x
JOIN SomeTable as y ON x.ID > Y.ID
WHERE Y.Name LIKE :Param

当然我想要自我加入,而不是子查询。


顺便说一句。 标准也是如此......

1 个答案:

答案 0 :(得分:1)

您无法通过HQL中的联接来执行此操作。

但是这个HQL查询没问题:

select f from Foo f where f.id > (select f2.id from Foo f2 where f2.name = :name)

如果子选择可能会返回多个ID,您也可以使用

select f from Foo f where f.id > all (select f2.id from Foo f2 where f2.name = :name)