目前我收到以下错误:
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
}
答案 0 :(得分:1)
在Grails多对多映射中,我们应该在两个关联类之间定义一个所有者类。 如前所述:
belongsTo = [eventgroup:Eventgroup,classgroup:Classgroup]
使用此GORM尝试在Event表下创建一个具有类组名称的列,但是对于与classgroup的多对多关联,数据库应该假设第三个表具有多个记录,用于事件和事件之间的多对多关联。 Classgroup。所以给出了这样的错误。
因此,当你提到:
belongsTo = [Eventgroup, Classgroup]
它起作用,因为它只是得到了所有者的信息。 因此,Classgroup将成为关联的所有者,因为Event属于Classgroup。
希望这会有所帮助。谢谢。