2011-02-06 2 views
3

Это контекст этого вопроса:HQL проблема с hasMany Струнный

У меня есть класс Grails:

class User{ 
    long id 
    static hasMany = [skills: String] 
    ... 
} 

Я хотел бы получить список пользователей из БД на 2 условиях:

  • набор идентификаторов
  • набор навыков (строки)

Я написал этот запрос, который работает для идентификаторов, но я не могу получить навык часть работы:

User.findAll("from User 
where id in (5067120,5067121,...5067139)") 

На данный момент я выбор пользователей с нужными навыками вручную после этого запроса, но, очевидно, это не эффективное решение. Как я могу это решить?

Спасибо!

ответ

4

Это должно работать:

def ids = [5067120L, 5067121L, ...5067139L] 
def skills = ['skill 1', 'skill 2'] 

def users = User.executeQuery(
    'select distinct u ' + 
    'from User u inner join u.skills skills ' + 
    'where u.id in (:ids) and skills in (:skills)', 
[ids: ids, skills: skills]) 

Обратите внимание, что вам не нужно указать поле идентификатора, если это обычный длинный, Grails делает это для вас.

Смежные вопросы