我有一个可以属于多个类之一的域类。我尝试保存时发现验证错误。
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]
}
验证错误表明一本书必须同时属于一名学生和一名教师(两者都不能为空),但我想对其进行建模以便它可以属于任何一种。我该怎么办?
请忽略这样一个事实:对于我的例子,你可以改变它,以便一个人拥有一本书,一个教师和一个学生都是人的类型 - 我想知道如何创建正确的belongsTo。
编辑以解释要求背后的推理:
将创建3个表:书籍,学生和教师。我需要能够在Book类上创建一个引用Student和Teacher的索引。这样的查询是"查找属于教师A"可以尽快制作。
如果只有一个belongsTo(示例显示是否为所有者老师),那么这样做:
静态映射= { 老师指数:' teacher_idx' }
答案 0 :(得分:1)
这是非常可行的,只是你的方法在这里是错误的。
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`
所以这里只为这三个域创建一个表,名为Book。此表格将包含一个字段class
,用于确定该图书是属于学生还是教师。
答案 1 :(得分:0)
如果我理解你,那么你可以使用其他版本的belongsTo
,它不存储所有者类的引用,例如
class Book {
static belongsTo = [Student, Teacher]
}