通过HQL中的列表中的特定元素进行选择

时间:2010-12-05 08:18:10

标签: nhibernate hql


我正在为动态查询实现“QueryEngine”设计模式 与查询语言的松散连接(如LINQ) 我很难从列表中为特定的elemt编写HQL 即:

public class Cat()
{
    public int ID { get; set; }
    public string Name { get; set; }
    public Cat Child { get; set; }
}

现在我正试图让他的孩子选择一只猫,所以HQL应该是这样的:

SELECT cat FROM CAT as cat  
WHERE cat.Child = {"Any value or subsearch"}

但如果我改变Cat类以获得一对多参考:

public class Cat()
{
    public int ID { get; set; }
    public string Name { get; set; }
    public IList<Cat> Children { get; set; }
}

HQL现在看起来像这样(我试图通过列表中的特定孩子进行选择)

SELECT cat FROM CAT as cat  
WHERE {"Any value or subsearch"} IN elements(Children}

我的问题是,我可以将第二个查询按顺序与第一个查询相似 像这样:

SELECT cat FROM CAT as cat  
WHERE Children CONTAIN {"Any value or subsearch"}

谢谢[=

2 个答案:

答案 0 :(得分:3)

你可能正在寻找这样的东西:

select cat from Cat cat
    join cat.Children child
    where child.Something is true

答案 1 :(得分:1)

HQL和Linq都不适合动态构建的查询。

我建议你改用Criteria