域类之间没有定义所有者

时间:2014-02-20 13:27:38

标签: grails many-to-many grails-domain-class

目前我收到以下错误:

No owner defined between domain classes [class mp.ra.Classgroup] and [class mp.ra.Event] in a many-to-many relationship.

域类的设置如下: 事件类:

class Event {
static hasMany = [classgroups:Classgroup]
static belongsTo = [eventgroup:Eventgroup,classgroup:Classgroup]

static constraints = {
    eventgroup nullable:true
}

和班组

class Classgroup {

static hasMany = [courses:Course,events:Event]

static constraints = {
    courses nullable:true
}

一个事件可以有多个类组,一个类组可以有多个事件。 我使用属于属性,所以我不明白为什么我得到这个错误。

编辑:我更改了事件类,错误消失了,我不知道这是不是一个好的解决方案

class Event {

Eventgroup eventgroup


static hasMany = [classgroups:Classgroup]
static belongsTo = [Eventgroup, Classgroup]

static constraints = {
    eventgroup nullable:true
}

1 个答案:

答案 0 :(得分:1)

在Grails多对多映射中,我们应该在两个关联类之间定义一个所有者类。 如前所述:

belongsTo = [eventgroup:Eventgroup,classgroup:Classgroup] 

使用此GORM尝试在Event表下创建一个具有类组名称的列,但是对于与classgroup的多对多关联,数据库应该假设第三个表具有多个记录,用于事件和事件之间的多对多关联。 Classgroup。所以给出了这样的错误。

因此,当你提到:

belongsTo = [Eventgroup, Classgroup] 

它起作用,因为它只是得到了所有者的信息。 因此,Classgroup将成为关联的所有者,因为Event属于Classgroup。

希望这会有所帮助。谢谢。