2013-03-30 71 views
1

我在這個Grails的領域類:如何在Grails中的hasMany關係中指定查詢?

class User { 
    String name 

    Status status 
    enum Status { 
    ACTIVE(1), 
    BLOCKED(2) 
    } 

static hasMany = [friends:User] 
} 

所以用戶可以有一個或更多的朋友(用戶)。

當我做這樣的事情:

User someone = User.get(1) 
someone.friends // all friends from this user 

但我希望得到朋友只有狀態爲ACTIVE。我如何在域類中指定這個?

謝謝

回答

0

重寫getFriends()方法。這當然沒有經過測試。

Set<User> getFriends() { 

User.executeQuery("Select f from User u join u.friends as f where u = :user and f.status = :status", [user: this, status: Status.ACTIVE]) 

} 
+0

我會避免重寫關聯的getter,因爲有時候您可能想訪問不活動的朋友。通過addToFriends添加不活動的用戶或通過setFriends設置整個集合可能會在調用getFriends()時產生一些混淆。定義getActiveFriends()來代替。我知道這就是他問的,我只是加了我的.02美元 – loteq