我執行動態查詢與鬆散連接的查詢語言(如LINQ)
一個「QueryEngine」設計模式。
我很難從列表中爲特定的elemt編寫HQL。
即:通過選擇列表中的特定元素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"}
謝謝[=
這個HQL的問題在於,我必須告訴QueryEngine在選擇後插入一個「Join」子句。設計模式分爲不同的類,每個類負責將部分HQL插入整體查詢..因此,SELECT子句的生成器甚至不會知道WHERE子句的生成器。 – 2010-12-05 09:00:53