私は2つのドメインクラスCGroupとDirectoryを持っていますが、これらの多くのディレクトリの1つが "root"として知られていますが、 CGroupからアクセス可能である。すべてのCGroupは1つのrootのみを持つべきであり、カスケードは、ディレクトリの削除がそのすべての子を削除するように動作するはずです。GORMはhasMany関係のインスタンスに直接アクセスします
間違っているが、これは私がこれまで持っているものです。
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
}
}
は基本的に、私はちょうど「1」側
はい!これはまさに私が探していたものです。あなたが述べた注文の問題は、私が直面した正確な問題でしたが、私はカスタムバリデーターに慣れていませんでした。それに、私は、かなり一般的なシナリオのように見えるものを見逃していたかもしれないと思った。 最後のコードブロックでは、2番目のaddToDirectoryが実際にsetRootを呼び出すべきではないでしょうか? Cheers – Alexjjsmith
いいえ、ルートが最初に設定され、次に2つのインスタンスが追加され、合計3つのインスタンスが追加されます。save()を2回呼び出すと、ルートは設定され、そのインスタンスはhasMany、オプションでいくつかの追加インスタンス。 –