hasMany String的HQL问题

时间:2011-02-06 18:14:24

标签: grails find hql gorm

这就是这个问题的背景:

我有一个Grails课程:

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

我想在两个条件下从数据库中获取用户:

  • 一组ids
  • 一组技能(字符串)

我写了这个适用于ID的查询,但我无法使技能部分工作:

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

目前我在此查询后手动选择具有合适技能的用户,但显然这不是一个有效的解决方案。 我该如何解决这个问题?

谢谢!

1 个答案:

答案 0 :(得分: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])

请注意,如果ID字段是常规的,则无需指定id字段,Grails会为您执行此操作。