目前,我遇到以下错误:
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/