2014-12-07 3 views
0

Я новичок в Grails и у меня есть два класса домена, как это:Междоменное ограничения класса

class User {  
    String username 
    String password 

    static hasMany = ['boards':Board] 
    static belongsTo = ['belongsToBoard':Board] 
} 

class Board { 
    String message 
    boolean starred 
} 

Теперь я хочу ограничения, такие как «User может иметь board с message быть уникальным» (Обратите внимание, что я не хочу Board быть уникальным, но для каждого User, то message должно быть уникальным. Пример:

User : batman 
Board: test,test (messages) 

не является действительным, где, как:

User: batman 
Board: test 

User: batgirl 
Board: test 

действительный один.

Можно ли это сделать в графе constraints блок? Если нет, то как мне это сделать?

Заранее спасибо.

ответ

1

Свойство belongsTo необычное - если это один-много, то есть пользователь имеет много досок, то belongsTo идет со стороны Совета. Это позволяет выполнять каскадные удаления, а также использует только две таблицы; если отношение не является двунаправленным, вы получаете третье, чтобы управлять отношениями. Если это много для многих, то вам не хватает hasMany в Board.

Если это один-много, и вы положили это в совет

static belongsTo = [user: User] 

, то вы можете поставить 2 колонки ограничение уникальности в Совете:

static constraints = { 
    message unique: 'user' 
} 

Это описано в документации справа в разделе «Ограничения» под «уникальным».

+0

Спасибо за ответ. Но это мой прецедент, у пользователя могут быть свои собственные доски (1-много), а также Пользователь может принадлежать к плате (в этом случае Пользователь не владеет доской, а принадлежит к плате, которую создал другой пользователь. – batman

Смежные вопросы