2016-03-22 12 views
3

Ich bin mit Grils 3.1.4 ausgeführt und Probleme beim Erstellen eines Schemas, mit dem ich mehrere Domänenobjekte an mehrere andere Domain-Objekte binden kann. Als ein Beispiel von dem, was ich versuche zu tun:Grails Domains - Multiple viele zu viele Beziehungen

Ich habe drei Klassen. Bücher, Autoren und Leselisten.

Autoren könnten viele Bücher geschrieben haben. Bücher können von mehreren Autoren geschrieben werden. Leselisten bestehen auch aus mehreren Büchern und Bücher können Teil mehrerer Leselisten sein. Wie soll ich die Domain dafür machen?

Ich habe versucht, sie bis zu wie folgt festgelegt:

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] 
} 

Beim Kompilieren ich diesen Fehler:

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

Ich habe versucht, mein belongsTo Wert ändert genau das gleiche zu sein wie die hasMany, mit den Kartenschlüsseln, die Pluralverben sind, aber das scheint auch nicht zu funktionieren. Irgendwelche Gedanken darüber, wie ich das erreichen kann?

Dank

+0

Könnten Sie haben eine vierte Klasse zur Überbrückung all IDs? Dies hätte seine eigene eindeutige ID und dann eine Spalte für jeden der drei Tabellenschlüssel. Sie würden dies mit jeder eindeutigen Kombination von IDs füllen. –

Antwort

0

Ehrlich gesagt ich den Grund nicht verstehen, aber diese Definition von Book sollte funktionieren,

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

Aber nicht zurück Referenzen

Verwandte Themen