2013-06-03 20 views
5

için: alanı sınıflar arasındaki tanımlanmış Hayır sahibi: Bunlar benim etki alanı sınıfları birçok birçok ilişki

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

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

Ben onlar No owner defined between domain classes olsun oldukları gibi onları kullanmaya çalışırsanız

. Bu yüzden ilişkinin sahibini ayarlamalıyım. static belongsTo = Game'un User'a eklenmesi, Domain classes cannot own each other in a many-to-many relationship'un neden olur.

Düşünebildiğim tek diğer seçenek, static belongsTo = User'u Game sınıfına eklemek ama ben zaten orada bir belongsTo var.

Bunu nasıl modelleyebilirim?

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

cevap

1

bu deneyin? kendi "sahibi" referansı olan bir kapatma kullanılan her nasılsa zaman ben "sahibi" alan adını kullanarak dikkatli olacağını Bilginize

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

, gibi basit alan başvuru kullanarak demek, bu (mesela sorunlara neden olabilir o yaparak, sahibi olarak, yine dava

0

belki hiç "belongsTo" kullanmak daha iyi olacak:

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

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

ilişkimizi bir tarafını belirtmek gerekir ise kriterler oluşturucu) onu geri grails 1.3.x sorunlara neden biliyorum bilmiyorum Bu çok sayıda ilişkinin sahibi olarak User alan sınıfını yapacaksınız.

addTo*() yönteminin adresinden kullanılabildiği belongsTo alan denetimini gerçekleştirir.numaralı telefonu arayabiliriz, çünkü GamebelongsToUser. Game.addToPlayers()'u arayamayız.

+0

Aynı veri modelini aldım ve bu işe yaramaz (HATA MESAJI: Çoktan çoğa ilişkisi içinde etki alanı sınıfları [sınıf Oyunu] ve [sınıf Kullanıcıları] arasında hiçbir sahip tanımlanmadı Örnek: statik belongsTo = Kullanıcı). cevabın tam olarak aynı anlamına gelen bir başka gorm gösterimi – pebbles

0

bu deneyin:

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

bu ayarlar benim için çalışıyor. Ve burada mappedBy için iyi bir iş parçacığı: GORM mappedBy and mapping difference

İlgili konular