2011-02-02 2 views
4

У меня есть связь M: M между пользователем и значком, которая создает таблицу соединений, называемую «user_badges». В этой таблице есть поля: user_id и badge_id. Есть ли способ получить стандартные поля date_created в этой таблице?Добавить dateCreated field to join table в Grails

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 –

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 
}