如何从自定义验证器Grails中的另一个Domain类引用属性?

时间:2012-01-04 04:15:43

标签: grails gorm hibernate-validator

我现在很难建立我的约束,我有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的属性。请帮帮我......

1 个答案:

答案 0 :(得分:2)

这应该可以解决问题:

    doctor(nullable:false, validator: { d, inst ->
        return d.hospital == inst.hospital; 
    })