这就是这个问题的背景:
我有一个Grails课程:
class User{
long id
static hasMany = [skills: String]
...
}
我想在两个条件下从数据库中获取用户:
我写了这个适用于ID的查询,但我无法使技能部分工作:
User.findAll( "from User
where id in (5067120,5067121,...5067139)" )
目前我在此查询后手动选择具有合适技能的用户,但显然这不是一个有效的解决方案。 我该如何解决这个问题?
谢谢!
答案 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会为您执行此操作。