Синтаксис запросов HQL в grails

#sql #grails #hql

#sql #grails #hql

Вопрос:

Я пытаюсь получить список сотрудников с несколькими «образованиями», у каждого из которых есть «Тип образования»

итак, у сотрудника есть коллекция образований, каждое из которых имеет тип, у которого есть имя.

     def unchecked = educationTypes?.unchecked
    String query = "FROM Employee e, IN (e.education)  AS ed WHERE ed.type.name IN (:typeNames)";

    def matches = Employee.executeQuery(query, [typeNames: unchecked]);
  

Приведенный выше запрос дает мне следующее:

 Stacktrace follows:
org.hibernate.hql.ast.QuerySyntaxException: unexpected token: ed near line 1, column 39 [FROM Employee e, IN (e.education)  AS ed WHERE ed.type.name IN (:typeNames)]
    at $Proxy12.createQuery(Unknown Source)
  

Итак, я пытаюсь выяснить, как правильно получить к этому доступ. Большое спасибо за любую помощь

Комментарии:

1. Является ли unchecked пустым? Я думаю, что предложения in прерываются в HQL, если ваш параметр пуст (по крайней мере, я сталкивался с этой проблемой в прошлом, но я не могу вспомнить исключение).

Ответ №1:

Попробуйте что-то вроде этого:

 Employee.executeQuery("""
    select e from Employee e, Education ed 
    where ed.employee = e and ed.type.name IN (:typeNames)
""", [typeNames: [...]])