Ich habe zwei Domänenklassen CGroup und Directory, Ich möchte eine CGroup modellieren, die viele Verzeichnisse hat, jedoch ist eines dieser vielen Verzeichnisse als "root" bekannt, und ist direkt zugänglich von der CGroup. Jede CGroup sollte immer nur eine Wurzel haben, und Kaskaden sollten immer so funktionieren, dass das Löschen eines beliebigen Verzeichnisses alle seiner untergeordneten Elemente löscht.GORM Direktzugriff auf Instanz in einer hasMany-Beziehung
Obwohl falsch, das ist, was ich bisher habe:
class CGroup{
...
Directory root
static hasMany = [directory:Directory]
static constraints = {
root(unique:true)
}
}
class Directory {
static hasMany = [children:Directory]
...
static belongsTo = [parent:Directory,
cgroup:CGroup]
static constraints = {
parent nullable: true
}
}
im Grunde, ich brauche nur einen Verweis auf eine Instanz von der „n“ Sammlung, gespeichert in der „einer Seite“
Ja! Das ist genau das, wonach ich gesucht habe. Das von Ihnen angegebene Bestellproblem war das genaue Problem, dem ich gegenüber stand, aber ich war nicht so vertraut mit benutzerdefinierten Validatoren. Außerdem dachte ich, dass ich etwas Offensichtliches vermisst hätte, da es sich dabei um ein ziemlich häufiges Szenario handelte. Eine Sache, in Ihrem letzten Block von Code sollte nicht das zweite AddToDirectory tatsächlich ein Aufruf von SetRoot sein? Prost – Alexjjsmith
Nein, root wird zuerst gesetzt und dann gibt es zwei zusätzliche Instanzen für insgesamt 3 hinzugefügt. Die Reihenfolge spielt keine Rolle, solange Sie beim zweiten Aufruf von save() das zweite Mal root setzen und diese Instanz ist in the hasMany, optional zusammen mit einigen zusätzlichen Instanzen. –