2011-02-02 50 views
4

我在User和Badge之間建立了一個M:M關係,它創建了一個名爲「user_badges」的連接表。該表具有字段:user_id和badge_id。有沒有辦法在這個表上獲得標準的date_created字段?在Grails中添加dateCreated字段以加入表

class Badge { 

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

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

回答

6

基本上,您需要更改映射,以便將M:M關係表示爲兩個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 – 2011-02-02 23:57:23

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 
}