2016-03-22 5 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. 

Я попытался изменить свое значение belongsTo быть точно такой же как hasMany, с ключами карты являются множественные глаголы, но это, похоже, не работает. Любые мысли о том, как я могу это сделать?

Благодаря

+0

Может у вас есть четвертый класс для преодоления всех идентификаторы? У этого будет свой собственный уникальный идентификатор, а затем столбец для каждого из трех клавиш таблицы. Вы можете заполнить это с помощью каждой уникальной комбинации идентификаторов. –

ответ

0

Честно говоря, я не понимаю причину, но это определение Book должно работать,

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

Но нет назад ссылки