0

am:m の関係は、まだ必要とされていない 3 番目のクラスがあることを意味する場合が多いと読みました。m:m onUserProjectがあり、3 番目のドメイン クラスを作成しました。ProjectMembership

3 つのドメインは次のとおりです (説明のために最小化しています)。

ユーザー

class User {

String name 

static hasMany = [projectMemberships : ProjectMembership]
}

プロジェクトメンバーシップ

class ProjectMembership {

static constraints = {          
}

static belongsTo = [user:User, project:Project]
}

計画:

class Project {

String name

static hasMany = [projectMemberships : ProjectMembership]

     static constraints = { 
     }
}

ユーザーの ID をProject知っている場合、割り当てられているオブジェクトのリストを取得するにはどうすればよいですか?

4

1 に答える 1

2

いくつかの方法があります-ここにいくつかあります:

def user = User.get(userId)
ProjectMembership.findAllByUser(user).collect { it.project }

または、ユーザーのクエリを回避するには:

ProjectMembership.withCriteria {
    user {
        eq('id', userId)
    }
}.collect { it.project }

大きな結果セットを返すクエリには注意してください。プロジェクトオブジェクトの膨大なメモリ内リストが作成されることになります。

于 2012-11-28T22:27:28.857 に答える