2

私は次のものを持っています:

class Match{ 
    Team localTeam
    Team visitingTeam
}

class Team{
    static hasMany = [matches: Match]
}

それがスローします:プラグインマネージャーの読み込みエラー:クラス[クラスmyapp.Team]のプロパティ[一致]は、逆側に2つの可能なプロパティを持つ双方向の1対多です。関係 [チーム] の反対側のプロパティの 1 つに名前を付けるか、'mappedBy' 静的を使用して、関係がマップされるプロパティを定義します。例: static mapsBy = [matches:'myprop']

したがって、「mappedBy」を使用します。

class Team{
    static hasMany = [matches: Match]
    static mappedBy = [matches: localTeam, matches: visitingTeam]
}

しかし、これを行うことで、データベースからチームを取得すると、マッチセットには、チームが訪問チームである試合のみが含まれます。つまり、試合のみをvisitingTeamにマップします。

次のようにコーディングすると:

class Team{
    static hasMany = [matches: Match]
    static mappedBy = [matches: localTeam]
}

localTeam の一致のみをマップします。

両方の試合 (チームがローカルの場合とビジターの場合) をチームにマッピングする方法はありますか?

4

2 に答える 2

4

最初に GORM パフォーマンスの問題に関する記事をお読みください: https://mrpaulwoods.wordpress.com/2011/02/07/implementing-burt-beckwiths-gorm-performance-no-collections

そして、これはあなたが探しているものかもしれません:

class Team {
   String name
   String description

   static constraints = {
    name blank: false, nullable: false
    description blank: true, nullable: true
   }

   static mapping = {
      description type: 'text'
   }

   Set<Match> getHomeMatches() {
    Match.findAllByHomeTeam(this).collect { it.homeTeam } as Set
   }

   Set<Match> getMatches() {
    Match.findAllByTeam(this).collect { it.team } as Set
   }
}


class Match {

   Team homeTeam
   Team team

   static constraints = {
    homeTeam nullable: false
    team nullable: false
   }

   static mapping = {
    id composite: ['homeTeam', 'team']
   }   
} 
于 2012-06-27T04:41:00.930 に答える
0

これを試して

class Team {
    static hasMany = [localTeamMatches: Match, visitingMatches: Match]
    static mappedBy = [localTeamMatches: "localTeam", visitingMatches: "visitingTeam"]
}
于 2012-06-27T04:48:16.953 に答える