Um eine fremde Schlüsselspalte (keine JoinTable) zu erreichen, wenn eine unidirektionale OneToMany-Beziehung abgebildet wird, befolge ich die Schritte gemäß der Referenzdokumentation von Grails (Version 2.2.3), Abschnitt 6.5.2.1 OneToMany-Mapping, das
angibt%Vor%Bei unidirektionalen Zuordnungen muss der Fremdschlüssel in der Assoziation selbst angegeben werden. Wenn zum Beispiel eine unidirektionale OneToMany-Beziehung zwischen Person (ersetzt durch Eins) und Adresse (ersetzt durch Viele) gegeben wird, ändert der folgende Code den Fremdschlüssel in der Viele-Tabelle
Allerdings, wenn ich renne
%Vor%Ich komme in die Konsole
%Vor%Hinweis Grails erstellen eine JoinTable namens one_many. Also, meine Frage: Es ist ein Bug oder etwas anderes? Was soll ich tun, um die JoinTable loszuwerden?
Auch wenn ich etwas wie
verwende %Vor%wie hier hervorgehoben hier , d Erhalten Sie die gleiche Ausgabe
Sie sind fast da, Sie haben zwei Hälften des Mappings, aber Sie brauchen beides, damit es richtig funktioniert. Es ist kein gut dokumentiertes Feature, aber ich habe es schon vorher benutzt und es funktioniert definitiv (z. B. keine Join-Tabelle). Also in deiner One-Klasse,
%Vor%HINWEIS: Es ist wahrscheinlich eine gute Idee, Grails zu beenden, zu bereinigen und neu zu starten, wenn Sie Mapping-Änderungen vornehmen. Ich habe viele Stunden damit verloren, meinen Kopf zu schlagen, wenn ein einfaches Grillen die Lösung war.
Sie könnten auch belongsTo
ohne die Rückwärtsreferenz in Ihrer Many-Klasse hinzufügen und hätten trotzdem eine echte uni-directional, aber mit dem zusätzlichen Vorteil der kaskadierenden Aktion (in der One-Klasse) ) wenn es etwas ist, das du brauchst.
Das folgende Setup wird das umsetzen, worüber Sie sprechen:
%Vor%Wenn Sie viele löschen möchten, wenn sie aus der Sammlung entfernt werden, fügen Sie Folgendes hinzu:
%Vor%