Grails 具有多个字符串的HQL问题

Grails 具有多个字符串的HQL问题,grails,find,hql,gorm,Grails,Find,Hql,Gorm,这就是这个问题的背景: 我有一个Grails类: class User{ long id static hasMany = [skills: String] ... } 我希望在两个条件下从db获取用户: 一组ID 技能集(字符串) 我编写了一个适用于ids的查询,但我无法让技能部分正常工作: User.findAll( "from User where id in (5067120,5067121,...5067139)" ) 目前,我在查询后手动选择具有正确技能的

这就是这个问题的背景:

我有一个Grails类:

class User{
   long id
   static hasMany = [skills: String]
   ...
}
我希望在两个条件下从db获取用户:

  • 一组ID
  • 技能集(字符串)
我编写了一个适用于ids的查询,但我无法让技能部分正常工作:

User.findAll( "from User 
where id in (5067120,5067121,...5067139)" )
目前,我在查询后手动选择具有正确技能的用户,但显然这不是一个有效的解决方案。 我怎样才能解决这个问题

谢谢

这应该有效:

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字段是常规的long字段,则不需要指定它,Grails会为您指定