我可以更改另一个域类的属性值吗?-圣杯



我是grails的新手。我的域类现在有问题。我有三个域类,类Patient、类NursePatient类<strong+NursePatient>,类NursePatent是一个复合键,您可以在其中查看谁是患者的主治护士,因此如果您查看其表,则只能查看护士和患者的id。这是我为护士类编写的代码:

class Nurse {
String name
Nurse partner
boolean idle = true
static belongsTo = [hospital: Hospital]
static constraints = {
    name(blank:false)
    partner(nullable:true)
    hospital(nullable:false)
}
String toString(){
    "Nurse ${name}"
}

}

-->这是我为NursePatient创建的域类:

class NursePatient implements Serializable{

Nurse nurse
Patient patient
static mapping = {
    version false
    id composite:['nurse', 'patient']
}
static constraints = {
    patient(nullable:false, validator:{val, obj -> val.hospital == obj.nurse.hospital})
    nurse(nullable:false)
}
String toString(){
    "Nurse ${nurse.name} - ${patient.name}"
}
void saveIt(Nurse x, Patient y){
    def np = new NursePatient(nurse: x, patient: y)
    if(np.save()){
       def n = nurse.get(nurse.id)
       n.idle = false
    }

}
}

-->我被要求打印一份没有病人的护士名单。我在想,当我使用类NursePatient中的saveIt()方法保存到表中时,一旦save()功,它就会将类Nurse的属性idle值从true更改为false,这样查询就更容易了。我的问题是,如果类NursePatient中的代码是正确的,或者是否可以从另一个类更改属性的值,我就不知道了。请帮帮我…谢谢!!

在不同的类中更改域类的属性是可以的。

但是,您并不真正需要NursePatient类。如果你声明护士和患者之间的关系是多对多的,比如这样:

class Nurse {
    static hasMany = [patients: Patient]
    ...
}
class Patient {
    static hasMany = [nurses: Nurse]
    ...
}

然后Grails将自动创建和更新所需的联接表。然后,您可以使用条件API:查询所有没有患者的护士

def nursesWithoutPatients = Nurse.withCriteria { isEmpty("patients") }

最新更新