2014-12-07 16 views
0

내가 Grails를하는 새로운 그리고 난이 같은 두 개의 도메인 클래스가 있습니다크로스 도메인 클래스 제약

class User {  
    String username 
    String password 

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

class Board { 
    String message 
    boolean starred 
} 

가 지금과 같은 제약 조건을 원하는 (즉 내가주의 "Userboard 독특한되는 message으로 할 수 있습니다" 고유해야 Board을하지 않지만, 각 User를 들어, message 독특한 예 같아야합니다.

User : batman 
Board: test,test (messages) 

하는 것은 유효하지 않은 경우와 같은 :

User: batman 
Board: test 

User: batgirl 
Board: test 

이 유효합니다.

grails constraints 블록에서 가능합니까? 내가 어떻게해야합니까?

미리 감사드립니다.

답변

1

belongsTo 속성이 비정상적입니다. 하나 인 경우 (즉, 사용자 수가 많은 경우) belongsTo은 게시자 측에서 사용됩니다. 이렇게하면 계단식 삭제가 가능하고 두 테이블 만 사용됩니다. 관계가 양방향이 아닌 경우 세 번째 관계를 관리해야합니다. 그것이 many-to-many 인 경우 널에서 hasMany을 놓치고 있습니다.

static constraints = { 
    message unique: 'user' 
} 

이이 문서에 설명되어 있습니다 : 그것은 한 많은이며, 당신이 보드에서 2 열 고유 제한 조건을 넣을 수 있습니다 다음

static belongsTo = [user: User] 

보드

에 넣고 경우

오른쪽의 '제약 조건'섹션에서 '고유'를 선택합니다.

+0

답변 해 주셔서 감사합니다. 그러나 이것은 나의 유스 케이스이고, 사용자는 자신의 보드 (1 - many)를 가질 수 있으며 또한 사용자는 보드에 속할 수 있습니다 (이 경우, 사용자는 보드를 소유하지 않지만 다른 사용자가 만든 보드에 속합니다. – batman