2011-02-02 2 views
4

私は、user_badgesという結合テーブルを作成するUserとBadgeの間にM:Mの関係を持っています。この表には、user_idとbadge_idというフィールドがあります。このテーブルの標準のdate_createdフィールドを取得する方法はありますか?GrailsのテーブルにjoinするためにdateCreatedフィールドを追加します

class Badge { 

static belongsTo = User 
static hasMany = [users: User] 
} 

class User { 
static hasMany = [badges: Badge] 
} 

答えて

6

基本的には、M:M関係が2つの1:M関係として表されるようにマッピングを変更する必要があります。ここで私は研究の同じ種類をやって参加するクラスがBadgeOwnerある例(そのため、デフォルトではテーブルがbadge_ownerという名前になります加入生成)

class Badge {  
    static hasMany = [owners: BadgeOwner] 
} 

class User { 
    static hasMany = [owners: BadgeOwner] 
} 

class BadgeOwner { 
    static belongsTo = [user: User, badge: Badge] 
    Date dateCreated 
    Date lastUpdated 
} 
+0

このアイデアの詳細については、http://www.grails.org/Many-to-Many+Mapping+without+Hibernate+XMLを参照してください。 –

4

追加のプロパティがある場合、それは結合テーブルではありません。これは別のエンティティです。したがって、それに応じてマッピングしてください:-)

0

です。私が間違っている場合は、以下にコメントしてください。

class Badge {  
    /* Declare Variables */ 
    static belongsTo = [BadgeOwner] 
} 

class User { 
    /* Declare Variables */ 
    static belongsTo = [BadgeOwner] 
} 

class BadgeOwner { 
    User user 
    Badge badge 
    Date dateCreated 
    Date lastUpdated 
}