3

通常、私はこの方法で一対多の関係を使用しています:

class Study {
    static hasMany = [ crfs : Crf ]
    String name 
    ...
} 

class Crf { 
String title
String info 
...
} 

この関係を他のドメインに拡張できます。例:

static hasMany = [ crfs : Crf, crfb : CrfBlood ...]

しかし、私の場合、Study ドメインを 30 の他のドメインにリンクする必要があります。

私の場合、どのドメイン モデルの実装を使用すればよいですか?
私のプロジェクトで動的ファインダーの使いやすさを維持したいと思います。

更新 - モデル補完:

Studyは、1対多のSubjectを持つことができます。スタディは 1対多のCrfs
を 持つことができます(例: CrfBlood、CrfMedical、crfFamily など...)。被験者は 1 対多の訪問を行うことができます (例: 被験者は複数の血液検査を受けることができます)。

Crfs をスタディに動的に割り当てたいのですが、ドメインで static hasMany = [...] を使用せずに GORM (動的ファインダー) を使用するにはどうすればよいですか?
たぶん、 hasMany と同じことを行うサービスを実装できますか?

4

1 に答える 1

0

すべての Crf 型を のサブクラスとして宣言できるCrfため、 との関係は 1 つだけにStudyなりますが、さまざまな型を追加することができます。

class Crf {
    String title
    String info
}

class CrfBlood extends Crf {
    String detailBlood
}

class CrfMedical extends Crf {
    String detailMedical
}

class Study {
    String name
    static hasMany = [ crfs: Crf ]
}

次に、次のことができます。

def s = new Study(...)
def c1 = new CrfBlood(...)
def c2 = new CrfMedical(...)
s.addToCrfs(c1)
s.addToCrfs(c2)
于 2011-06-15T21:03:00.603 に答える