Я реализует «QueryEngine» шаблон проектирования динамических запросов
на рыхлое подключение к языку запроса (например, LINQ).
Мне тяжело писать 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 вставить предложение «Присоединиться» после выбора. Шаблон проектирования разделен на разные классы, и каждый класс отвечает за вставку части HQL в общий запрос .. Таким образом, генератор предложения SELECT даже не знает о генераторе предложения WHERE. – 2010-12-05 09:00:53