【发布时间】:2011-02-16 23:22:34
【问题描述】:
通常我通过这种方式使用一对多关系:
class Study {
static hasMany = [ crfs : Crf ]
String name
...
}
class Crf {
String title
String info
...
}
我可以将这种关系扩展到其他领域,例如:
static hasMany = [ crfs : Crf, crfb : CrfBlood ...]
但在我的情况下,我必须将 Study 域链接到 30 个其他域,也许更多......(例如:CrfBlood、CrfMedical、crfFamily 等......)。
在我的情况下我应该使用什么域模型实现?
我想在我的项目中保持动态查找器的可用性。
更新 - 模型补充:
研究可以有一对多的主题。
研究可以有一对多的Crfs(例如:CrfBlood、CrfMedical、crfFamily 等...)。
一个主题可以有一对多的访问(例如:一个主题可以有多个验血)。
我想将 Crfs 动态分配给一项研究,那么如何在我的域中不使用静态 hasMany = [...] 的情况下使用 GORM(动态查找器)?
也许,我可以实现一个服务来做同样的事情 hasMany 吗?
【问题讨论】:
-
hasMany中有 30 个域类有什么问题?所有的关系都是1:M(可能blood是1:1的关系)? -
我可以拥有一些具有 1:1 关系的 crfs。通常是 1:M。
-
所以有一些“hasOne”关系:grails.org/doc/latest/ref/Domain%20Classes/hasOne.html。但是.. hasMany 有什么不好?你为什么不直接使用它?
-
每次我添加一个新的 crf 时,我都必须更新 Study 域。此外,对于每项研究,管理员必须定义他想在研究中使用哪些 crf(例如:Study1 仅使用 CrfBlood 和 CrfMedical,而 Study2 仅使用 CrfMedical 和 CrfFamily)。
标签: grails groovy grails-orm grails-domain-class