Dies ist mein erstes Projekt mit vielen-zu-vielen-Beziehungen und nachdem ich einige Grails-Sachen von ORM gelesen hatte, beschloss ich, dass Grails die Arbeit für mich erledigen, wie das Erstellen der Tabellen. Eigentlich mein Deal war:Problem mit Viele-zu-Viele und Kartierung
- 1 Benutzer viele Gruppen hat
- 1 gehört einer Gruppe zu einer User und viele Nutzer hat (außer dem Eigentümer)
Hier sind meine Klassen:
class User {
String name
List groups
static hasMany = [groups : Group]
static mapping = {
table 'users'
version false
}
}
class Group {
String name
List members
static belongsTo = User
static hasMany = [members : User]
static mapping = {
table 'groups'
version false
}
}
Danach, was ich von Grails bekam, war 3 Tische. Die Benutzer Tisch war in Ordnung, aber die nächsten 2 war nicht das, was ich erwartet hatte.
table **groups** | id | name
table **users_groups** | group_id | user_id | members_idx | groups_idx
Nun, was ich wollte, war so etwas wie diese:
table **groups** | id | name | user_id
table **users_groups** | group_id | members_idx | groups_idx
Ich weiß nicht, ob ich etwas falsch gemacht habe oder wie kann ich das Problem beheben, aber trotzdem ... Ich bin immer noch ein anderes Problem zu bekommen, wenn ich versuche, user.addToGroups (neue Group()) zu tun. Meine users_groups Tabelle dupliziert dieses Register, eines mit dem Members_idx null, und das andere Register mit dem groups_idx null.
Ich erinnere mich, dass ich versuchte, das zu tun, aber es löst eine Ausnahme aus: Kein Besitzer definiert zwischen Domänenklassen [Klasse Benutzer] und [Klassengruppe] in einer Viele-zu-viele-Beziehung. Beispiel: static oigsTo = Gruppe – mateusmaso
Sorry, dummer Vorschlag. Das macht Sinn für ein 1-many, aber nicht für viele-viele –