2011-02-06 49 views
3

這就是這個問題的背景:我有一個Grails類HQL問題用的hasMany字符串

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

我想從數據庫獲取用戶的2個條件:

  • 集ID
  • 一套技能(串)

我寫了這個查詢,將IDS工作,但我不能讓技能部分工作:

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

請注意,您不需要指定id字段,如果它是一個普通的長,Grails的確實是你的。