目前,我遇到以下错误:

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
}

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

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

Eventgroup eventgroup


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

static constraints = {
    eventgroup nullable:true
}

最佳答案

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

belongsTo = [eventgroup:Eventgroup,classgroup:Classgroup]

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

因此,稍后您提到:
belongsTo = [Eventgroup, Classgroup]

它只是获得所有者信息而起作用。
所以在这里,Classgroup将是关联的所有者,因为Event属于ClassGroup。

希望这可以帮助。谢谢。

关于grails - 域类之间未定义所有者,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21909238/

10-13 08:41