我有一个有集合的课程
public class Parent
{
...
ISet<Child> Children;
...
}
给定一个子名称列表,我想返回其Children属性包含此列表中所有项目的父母。
我设法编写了一个HQL查询,但它适用于单个名称,而不是整个列表:
SELECT p FROM Parent AS p JOIN p.Children AS c WHERE c.Name = 'MyName'
答案 0 :(得分:0)
感谢Mauricio,我设法通过以下条件查询解决了这个问题
var criteria = session.CreateCriteria<Parent>("p")
.Add(Restrictions.IsNotEmpty("p.Children"));
foreach (var name in namesToMatch)
{
criteria.Add(Subqueries.Exists(DetachedCriteria.For<Parent>("p2")
.SetProjection(Projections.Id())
.CreateAlias("p2.Children", "c")
.Add(Restrictions.Eq("c.Name", name))
.Add(Restrictions.EqProperty("p2.Id", "p.Id"))));
}