grails-orm - GORM 多对多和反向引用是否有 belongsTo 混合语法

标签 grails-orm grails-2.0 grails-domain-class

我发现了 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/

相关文章:

grails - 约束

grails - 是否可以将 Grails 配置为从不更改域对象,除非调用 .save()?

mysql - Grails 插入不带时间的日期

grails - 无法从 Grails 中的服务执行保存操作

grails - 命令对象验证奇怪的行为

unit-testing - Grails:模拟休眠域操作-beforeInsert

mysql - Grails 中属性的自引用关系?

hibernate - Grails “cascade” attach()进入 session ?

grails 2.0 包含资源的简单方法?

grails - Grails删除 child