我正在为动态查询实现“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"}
谢谢[=
答案 0 :(得分:3)
你可能正在寻找这样的东西:
select cat from Cat cat
join cat.Children child
where child.Something is true
答案 1 :(得分:1)
HQL和Linq都不适合动态构建的查询。
我建议你改用Criteria。