3

通常我通过这种方式使用一对多关系:

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

class Crf { 
String title
String info 
...
} 

我可以将这种关系扩展到其他领域,例如:

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

但在我的情况下,我必须将研究域链接到其他 30 个域,也许更多......(例如:CrfBlood、CrfMedical、crfFamily 等......)。

在我的情况下我应该使用什么域模型实现?
我想在我的项目中保持动态查找器的可用性。

更新 - 模型补充:

一项研究可以有一对多的主题
一项研究可以有一对多的Crf(例如:CrfBlood、CrfMedical、crfFamily 等)。
一个主题可以有一对多的访问(例如:一个主题可以有几个验血)。

我想动态地将 Crfs 分配给一项研究,那么如何在我的域中不使用静态 hasMany = [...] 的情况下使用 GORM(动态查找器)?
也许,我可以实现一个服务来做同样的事情 hasMany 吗?

4

1 回答 1

0

您可以将所有 Crf 类型声明为 的子类Crf,这样您就只能与 有一种关系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 回答