grails - Grails属于多个类别

标签 grails gorm belongs-to

我有一个 Realm 类,可以属于几个类之一。尝试保存时出现验证错误。

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类上创建一个引用学生和教师的索引。这样可以使查询“查找属于教师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`

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

关于grails - Grails属于多个类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28364670/

相关文章:

Grails 默认包名

grails - Grails自定义消息不起作用

ember.js - Ember 数据 - hasMany/belongsTo 的模型与默认模型不同

grails - Grails 插件如何添加自己的 URLMappings?

grails - 调试 Grails 3.x 应用程序

grails - GORM继承

grails - 根据属性grails过滤GORM对象

grails - 如何在grails中隐藏动态脚手架中的列,但在编辑和创建页面中应该可见

ruby-on-rails - 为什么belongs_to/has_many 和 inverse_of 不能自动水合另一边?

sql - 如何改变Rails的belongs_to行为