使用特定ID /电子邮件保存为grails

时间:2018-05-28 07:13:06

标签: grails groovy gorm

我有两个领域,患者和过敏。我想特别针对特定患者保存过敏症(电子邮件是每位患者的唯一标识符)。详细信息来自Android应用程序,电子邮件是其中一个参数。

假设用户已经存在,我将如何进行过敏服务才能做到这一点。

这是成功注册新患者并保存其详细信息的患者服务。我有一个控制器,作为Android应用程序的API。

@Transactional
class PatientService {



   //creating new
    def updateSave(params) {
        def patient
        //record exists
        if(params.id){
             patient = Patient.findById(params.id)
            if(patient) {
                patient.validate()

                patient.dateUpdated = new Date()
                patient.save(params)
            }
        }else{


            params.password=MD5CodecExtensionMethods.encodeAsMD5(params.password)


            patient = new Patient(params)
            patient.validate()

            System.out.println(patient.errors)
            patient.save flush:true


        }

        return patient

这是我尝试过敏服务但是卡住了

@Transactional
class AllergyService {


def  Save(params) {
    def allergy
    Patient patient




        allergy = new Allergy(params)
        allergy.validate()

        System.out.println(allergy.errors)
        allergy.save flush:true

    return Allergy.findAllByPatient(params)

}

1 个答案:

答案 0 :(得分:2)

我假设Patient有很多Allergies,所以你必须创建一个合适的关联:

class Patient {
    static hasMany = [allergies: Allergy]
}
class Allergy {
}

Grails会自动将一组过敏症注入患者区域。

save方法中,您应该可以访问Patient或他的email属性,以便以某种方式连接它们。 然后,你可以这样做:

def save(patientEmail, params) {
    Patient patient = Patient.findByEmail(patientEmail)
    Allergy allergy = new Allergy(params)
    patient.addToAllergies(allergy)
    patient.save()
}