Grails 属于多个 类

Grails belongsTo multiple classes

我有一个域 class 可以属于多个 class 之一。我在尝试保存时看到验证错误。

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。我需要能够在 Book class 上创建一个引用 Student 和 Teacher 的索引。这样可以尽快进行 "find all books that belong to Teacher A" 的查询。

如果只有一个 belongsTo(如所有者老师所示),则这样做:

静态映射={ 教师指数:'teacher_idx' }

嗯,这是非常可行的,只是你的方法在这里是错误的。

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`

所以这里只为三个域创建一个table,命名为Book。此 table 将包含一个字段 class,它将确定这本书是属于学生还是属于教师。

如果我理解你,那么你可以使用其他版本的 belongsTo,它不存储所有者 Class 的反向引用,例如

class Book {
    static belongsTo = [Student, Teacher]
}

Ref