是否有一个belongsTo混合语法用于GORM多对多和反向引用

时间:2012-11-03 13:04:24

标签: gorm 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

但是,我还需要使用地图表示法从设计到模型的后向引用。

我的问题是你如何混合2个案例?

我在设计中尝试过:

static belongsTo = [model:Model, category:Category]

这会产生运行时错误 - 在多对多关系中没有在域类别和设计之间定义所有者。

static belongsTo = [model:Model, Category]

这会产生编译错误。

static belongsTo = [Model, Category] 

预期的model_id不是在Design中创建的,而是创建了models_designs的全新表,这是不正确的。但是一切都在编译和运行。

1 个答案:

答案 0 :(得分:0)

如果您在设计和类别之间存在hasMany关系,而设计是拥有方,那么您是否应该

static hasMany = [category: Category] in Design class 

static belongsTo = Design in Category class.

通过这种方式,你仍然可以保持

static belongsTo = [model:Model]

在Design类中。