2010-05-01 45 views
0

我得到了這樣的情況: - 用的hasMany角色和屬於關聯角色 類用戶 - 與hasMans User類角色查找對象 - Grails的

我如何能得到角色屬於用戶,對象用戶給出, 我如何獲得對象在多對多的szanario?

findByX不起作用,它隻影響一個表,但我需要一個「查找」或其他東西來查找整體/超過許多表的對象。

任何人都可以幫助我嗎?並原諒我沒有propper英語^^

回答

1

如果你有一個User類,看起來像這樣:

class User { 
    String username 
    static hasMany = [roles: Role] 
    static belongsTo = Role 
} 

和角色類,看起來像這樣:

class Role { 
    String name 
    static hasMany = [users: User] 
} 

那麼你的角色類有一個用戶集合 - hasMany定義了這個集合。用戶及其角色也是如此。

所以,如果你有一個用戶,用戶的角色只是「user.roles」:

def user = User.findByUsername('foo') 
user.roles.each { role -> 
    println "User $user.username has role $role.name" 
} 

,你可以做同樣的事情角色:

def role = Role.findByName('ROLE_ADMIN') 
role.users.each { user -> 
    println "User $user.username has role $role.name" 
} 
+0

感謝,這似乎工作,沒有錯誤。 你能告訴我如何通過使用bootstrap創建測試數據,生成用戶和角色簡單的作品,但我該如何引導那裏的關係? – Oliver 2010-05-01 21:38:40

+0

您使用動態addToXXX方法,在這種情況下,role.addToUsers(用戶) - 請參閱http://grails.org/doc/latest/guide/5.%20Object%20Relational%20Mapping%20(GORM).html#5.2 1.3%20Many一對多 – 2010-05-02 05:14:22