我发现了 GORM 映射的一个特点。
我对桌面的期望是
models
designs (model_id -> models.id)
categories
categories_design (category_id, design_id)
要在设计中获得 model_id,我会使用映射语法
static belongsTo = [model:Model]
所以现在,我在 Design 和 Category 之间也有一个 hasMany 关系,拥有方是 Design。
GORM 手册说使用非映射语法表示拥有方
static belongsTo = Category
但是,我还需要使用 map 符号从设计到模型的反向引用。
我的问题是如何混合这两种情况?
我在设计中尝试过:
static belongsTo = [model:Model, category:Category]
这会出现运行时错误 - 在多对多关系的域类类别和设计之间没有定义所有者。
static belongsTo = [model:Model, Category]
这会产生编译错误。
static belongsTo = [Model, Category]
预期的 model_id 没有在设计中创建,而是为 models_designs 创建了一个全新的表,这是不正确的。但是一切都会编译并运行。
最佳答案
如果您在设计和类别之间有一个 hasMany 关系,并且设计是拥有方,您不应该有一个
static hasMany = [category: Category] in Design class
和
static belongsTo = Design in Category class.
这样,你仍然可以保持
static belongsTo = [model:Model]
在设计类中。
关于grails-orm - GORM 多对多和反向引用是否有 belongsTo 混合语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13209460/