Grails GORM на нескольких формах - PullRequest
3 голосов
/ 17 февраля 2011

Обычно я использую отношение «один ко многим» следующим образом:

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

class Crf { 
String title
String info 
...
} 

Я могу распространить это отношение на другие домены, например:

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

Но в моемВ случае, если я должен связать домен исследования с 30 другими доменами, может быть, еще ... (например: CrfBlood, CrfMedical, crfFamily и т. д.).

Какую реализацию модели домена я должен использовать в моем случае?
Я хотел бы сохранить удобство использования динамических искателей в моем проекте.

Обновление - дополнение модели:

A Исследование может иметь один-в-многим Предмет .
A Study может иметь один-ко-многим Crfs (например: CrfBlood, CrfMedical, crfFamily и т. д. ...).
A Субъект может иметь один-ко-многим Визит (например: у субъекта может быть несколько анализов крови).

Я хотел бы получить динамическоеназначить Crfs для исследования, так как я могу использовать GORM (динамические искатели) без использования статического hasMany = [...] в моем домене?
Может быть, я могу реализовать сервис, чтобы делать то же самоесделал hasMany?

1 Ответ

0 голосов
/ 16 июня 2011

Вы можете объявить все типы 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...