2013-06-03 12 views
5

Są to moje klasy domeny:Nie określono między klasami domen właściciel: wiele do wielu relacji

class Game { 
    static hasMany = [players: User] 
    static belongsTo = [owner: User] 
} 

class User { 
    static hasMany = [games: Game] 
} 

Jeśli staram się z nich korzystać, ponieważ są one uzyskać No owner defined between domain classes. Muszę więc ustawić właściciela relacji. Dodawanie static belongsTo = Game do User powoduje Domain classes cannot own each other in a many-to-many relationship.

Jedyna opcja mogę myśleć jest dodanie static belongsTo = User do klasy Game ale mam już tam belongsTo.

Jak mogę to modelować?

Odpowiedz

1

Spróbuj tego:

class Game { 
    User owner 
    static hasMany = [players: User] 
    static belongsTo = User 
} 
0

może lepiej byłoby nie używać „Należy do” w ogóle? Mam na myśli używając prostego odniesienia pola jak

class Game { 
    User owner 
    static hasMany = [players: User] 
} 

FYI, Byłbym ostrożny z używaniem „Właściciel” nazwę pola, może to powodować problemy przy stosowaniu jakoś w zamknięciu, który ma swój własny „właściciel” odniesienia (np kryteria builder) wiem, że to spowodowało problemy z powrotem w grails 1.3.x, nie wiem, czy to nadal sprawa

5
class Game { 
    User owner 
    static hasMany = [players: User] 
    static belongsTo = User 
} 

class User { 
    static hasMany = [games: Game] 
} 

trzeba będzie podać jedną stronę relacji, jako właściciel, wykonując to uczynisz domenę User domeną właściciela wielu do wielu relacji.

Pole belongsTo kontroluje, gdzie można zastosować dynamiczne metody addTo*() z. możemy zadzwonić pod numer User.addToGames(), ponieważ GamebelongsTo. nie możemy zadzwonić pod numer Game.addToPlayers().

+0

Mam ten sam model danych i to nie działa (KOMUNIKATY BŁĘDU: Nie zdefiniowano właściciela między klasami domeny [gra klasy] i [użytkownik klasy] w relacji wiele do wielu Przykład: static belongsTo = User). twoją odpowiedzią jest kolejna notacja gorm, która oznacza dokładnie to samo – pebbles

0

spróbuj tego:

class Game { 
    User owner 
    static hasMany = [players: User] 
    static belongsTo = User 
} 

class User { 
    static hasMany = [games: Game, owns: Game] 
    static mappedBy = [games:'players', owns: 'owner'] 
} 

to ustawienia dla mnie pracować. I tutaj jest dobry wątek do mapowania: GORM mappedBy and mapping difference