我在grails 3.1.4上运行,无法创建允许我将多个域对象绑定(bind)到其他几个域对象的架构。作为我正在尝试做的一个例子:
我有三节课。书籍,作者和阅读 list 。
作者本可以写很多书。书籍可以由多位作者撰写。另外,ReadingLists由几本书组成,并且书籍可以是多个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.
我试图将我的belongsTo值更改为与hasMany完全相同,而映射键为复数动词,但这似乎也不起作用。关于如何实现此目标的任何想法?
谢谢
最佳答案
坦白地说,我不明白原因,但是Book
的这个定义应该起作用,
class Book {
Long id
String title
Integer pageCount
static belongsTo = [Author, ReadingList]
static hasMany = [authors: Author, readingLists: ReadingList]
}
但是没有回引用