我现在很难建立我的约束,我有3个域类,即医院,医生和病人,其中医院和医生有1:m的关系,医生和患者也有1:m的关系。所以我被要求创建一个虚拟数据,我必须与医生和患者一起制作两个不同的医院。这是我的域类医院的代码。
class Hospital {
String name
String location
static transients = ['patients']
static hasMany = [doctor: Doctor, patient: Patient]
static constraints = {
name(blank:false)
location(blank:false)
doctor(nullable:false)
} }
- >这是我的域类医生的代码。
class Doctor {
String name
String specialization
static hasMany = [patient: Patient]
static belongsTo = [hospital: Hospital]
static constraints = {
name(blank:false)
specialization(blank:false)
patient(nullable:true)
hospital(nullable:false)
} }
- >以及患者域类
class Patient {
String name
String ailment
int age
Date dateAdmit, dateDischarge
static belongsTo = [doctor: Doctor, hospital: Hospital]
static constraints = {
name(blank:false, maxSize:100)
ailment(blank:false)
age(size:1..200)
dateAdmit(nullable:true)
dateDischarge(nullable:true)
doctor(nullable:false)
hospital(nullable:false)
}}
- >我和医生和病人一起救了2家医院,即 hospitalA 和 hospitalB ,我的问题是我需要确保来自 hospitalB 的医生不能有来自 hospitalA 的患者或医生和患者必须在同一家医院。我相信我需要使用自定义验证器。但我不知道如何,因为我应该比较来自不同域calsses的属性。请帮帮我......
答案 0 :(得分:2)
这应该可以解决问题:
doctor(nullable:false, validator: { d, inst ->
return d.hospital == inst.hospital;
})