Grails属于多个类

时间:2015-02-06 11:22:52

标签: grails gorm belongs-to

我有一个可以属于多个类之一的域类。我尝试保存时发现验证错误。

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' }

2 个答案:

答案 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]
}

Ref