我从NHibernate开始。
我有一个名为Person
的类型,其集合为Address
。
我如何获取:
所有拥有至少2个地址的人
使用ICriteria?提前谢谢。
答案 0 :(得分:1)
为此,您需要使用子查询。
Address alias = null;
ICriteria criteria = personsCriteria.CreateCriteria<Person>(x => x.Address, () => alias);
var addressCount = DetachedCriteria.For<Address>();
addressCount.SetProjection(Projections.RowCount());
addressCount.Add<Address>(x => x.User.Id == alias.Id);
criteria.Add(Subqueries.Eq(2, addressCount));
我正在使用ICriteria lambda扩展。您可以查看它们here