Grails有一个协会

时间:2015-01-18 11:39:10

标签: grails gorm

这两个hasOne语法有什么区别?

class Project {
.......
............
    static hasOne = Employee

  //  static hasOne = [employee:Employee]
}

我注意到第一个创建了多对多关系(3个表)但它应该是多对一(2个表),就像我在Employee类中一样:

static hasMany = [projects:Project]

第二个工作正常:

static hasOne = [employee:Employee]

我正在使用Grails 2.2.0,我甚至在Grails 2.0.3中尝试过,但结果是一样的。

由于

1 个答案:

答案 0 :(得分:0)

我认为第一种变体根本没有任何意义。你可以定义一个belongsTo反向引用而不指定一个字段,例如,这可以用于级联事物。

hasOne的情况完全相反:您希望明确一对一,这使得明确指定引用是合乎逻辑的:

static hasOne = [employee:Employee]

使用hasOne的最常见情况是,当您想要一对一的关系时,但您不想修改您引用的域类,这样您就不必引入更多复杂性和/或迁移旧表。

在我看来,第一个版本没用,并且由于缺少GORM开发人员的时间而不会产生错误? ;)