2016-03-22 132 views
3

我正在运行grails 3.1.4,并且无法创建允许将多个域对象绑定到其他几个域对象的模式。作为我想要做的一个例子:Grails域 - 多对多关系

我有三个类。书籍,作者和阅读列表。

作者可能写了很多书。书籍可以由几位作者撰写。此外,ReadingLists由几本书组成,书可以成为多个阅读列表的一部分。我应该如何去做这个域名?

我试图将它们设置为如下:

class Author { 
    Long id 
    String firstName 
    String lastName 
    static hasMany = [books: Book] 
} 

class ReadingList { 
    Long id 
    String name 
    static hasMany = [books: Book] 
} 

class Book { 
    Long id 
    String title 
    Integer pageCount 
    static belongsTo = [author: Author, readingList: ReadingList] 
    static hasMany = [authors: Author, readingLists: ReadingList] 
} 

在编译时,我得到这个错误:

No owner defined between domain classes 
[class firstapp.ReadingList] and [class firstapp.Book] in a many-to-many relationship. 

我试图改变我属于关联值是完全一样的作为hasMany,地图键是复数动词,但似乎也不起作用。有关我如何完成此任何想法?

感谢

+0

你可以为桥接第四类中的所有ID的?这将拥有自己的唯一ID,然后是三个表键中的每一个的列。你可以用ID的每个唯一组合来填充它。 –

回答

0

坦白说,我不明白其中的道理,但Book这个定义应该工作,

class Book { 
    Long id 
    String title 
    Integer pageCount 
    static belongsTo = [Author, ReadingList] 
    static hasMany = [authors: Author, readingLists: ReadingList] 
} 

但是,没有反向引用