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

标签 grails gorm hibernate-validator

我现在很难建立约束,我有3个域类,分别是医院,医生和患者,其中医院医生具有1:1的关系,而医生也有1:m的关系。因此,我被要求创建一个虚拟数据,在该数据中,我必须创建两个拥有医生和患者的不同医院。这是域类 Hospital 的代码。

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)

}  }

->这是域类 Doctor 的代码。
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家医院,即医院A 医院B 与医生和患者,我的问题是我需要确保医院B 的医生不能让医院患者来自医院的Doctort和r或患者必须在同一家医院。我相信我需要使用自定义验证程序。但是我不知道怎么做,因为我应该比较不同 Realm 的属性。请帮我...

最佳答案

这应该可以解决问题:

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

关于grails - 如何从自定义验证器Grails中的另一个Domain类引用属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8721943/

相关文章:

java - 在应用程序启动期间验证 @Value 注释的字段

spring-data-jpa - JPA、Hibernate 验证器 - 电子邮件验证器不适用于 String

java - 如何在 validator 的消息中写入java变量值

grails - Activiti BPM 初学者指南?

grails - 为什么我不必在配置中声明监听器?

javascript - 我如何从 JavaScript 和 Grails 访问变量?

grails - Grails <where>返回带有所有条目的DetachedCriteria

grails - 插件或应用程序中是否存在Grails域?

grails - 覆盖默认的GORM id生成器

grails - GORM/深层次的不同关联查询条件