2015-02-06 4 views
0

여러 클래스 중 하나에 속할 수있는 도메인 클래스가 있습니다. 저장하려고하면 유효성 검사 오류가 표시됩니다.Grails belongsTo 여러 클래스

class Teacher { 
    Book book 
} 

class Student { 
    Book book 
} 

// book can belong to either a student or a teacher 
class Book { 
    static belongsTo = [student : Student, teacher : Teacher] 
} 

검증 오류는 책은 학생 및 교사 모두에 속해 없어야합니다 (둘 다 null도 가능) 제안,하지만 난 하나에 속할 수 있도록 모델링하고 싶다. 어떻게해야합니까?

예를 들어 개인이 책을 소유하고 교사와 학생이 모두 유형의 사람이되도록 변경할 수 있다는 사실을 무시하십시오. 정확한 belongsTo를 만드는 방법을 알고 싶습니다.

편집 요구 뒤에 이유를 설명하기 : 책, 학생 및 교사 :

3 개 테이블 생성있을 것입니다. Book 클래스에서 Student와 Teacher를 가리키는 색인을 생성 할 수 있어야합니다. 따라서 "선생님 A에 속한 모든 책을 찾으십시오"라는 질문은 가능한 빨리 만들 수 있습니다.

정적 매핑 = { 교사 지수 : 'teacher_idx' } 잘

답변

1

이이

는이 이렇게 이루어집니다 (소유자 교사를위한 경우 표시 예) 단지 하나의 belongsTo를가 있었다면 매우 많이 행할 수 있습니다. 당신의 접근 방식이 잘못되었습니다.

belongsTo은 엔티티가 다른 엔티티와 매핑되어야하고 매핑되어야하는 방식으로 사용됩니다. 둘 중 하나와 같은 것은 없습니다. 당신이 할 수있는 일

그래서 여기에 하나의 테이블이 만들어집니다 도서라는 이름으로 세 개의 도메인에 대한

1. create an Abstract Domain `Book` 
2. create an Domain `StudentBook` it belongs to `Student` 
3. create an Domain `TeacherBook` it belongs to `Teacher` 

입니다. 이 표는 책이 학생 또는 교사에게 속하는지 여부를 결정하는 class 필드를 포함합니다.

0

내가 당신을 이해한다면 당신은 소유자 클래스 등의 기준을 다시 저장하지 않습니다 belongsTo의 다른 버전을 사용할 수 있습니다

인덱스 요구 사항은 내가 질문에 넣어 한이 지원을합니까
class Book { 
    static belongsTo = [Student, Teacher] 
} 

Ref

+0

부디? – John