HQL проблема с hasMany String - PullRequest
       14

HQL проблема с hasMany String

3 голосов
/ 06 февраля 2011

Вот контекст этой проблемы:

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

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

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

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

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

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

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

Спасибо!

1 Ответ

4 голосов
/ 06 февраля 2011

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

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])

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

...