Um eine Fremdschlüsselspalte (kein joinTable) zu erreichen, wenn eine unidirektionale OneToMany Beziehung abbildet, folgt i den Schritten nach Grails (Version 2.2.3) Referenzdokumentation, section 6.5.2.1 OneToMany Mapping, in dem es heißtunidirektional OneToMany Beziehung ohne joinTable
Bei unidirektionalen Zuordnungen muss der Fremdschlüssel in der Assoziation selbst angegeben werden. Zum Beispiel eine unidirektionale OneToMany Beziehung zwischen Person gegeben (ersetzt durch One) und Anschrift (von vielen) ersetzt, der folgende Code wird den Fremdschlüssel in der Viele-Tabelle
class One {
static hasMany = [manyCollection:Many]
static mapping = {
manyCollection(column:"ONE_ID")
}
}
jedoch ändern, wenn ich laufen
One one = new One()
one.addToManyCollection(new Many())
one.save()
ich in der Konsole
insert
into
one
(id, version)
values
(null, ?)
insert
into
many
(id, version)
values
(null, ?)
insert
into
one_many
(one_many_collection_id, many_id)
values
(?, ?)
Hinweis Grails cr eate 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 so etwas wie
class One {
static hasMany = [manyCollection:Many]
static mapping = {
manyCollection(joinTable:false)
}
}
wie hervorgehoben verwenden here, erhalte ich die gleiche Ausgabe
Die Referenzdokumentation ist falsch. ** Wir sollten joinTable verwenden: false ** anstelle der Spalte. Wenn ich nur die in der Dokumentation angegebene Spalte verwende, wird eine JoinTable erstellt. –