сохранение в Grails с использованием определенного идентификатора / электронной почты - PullRequest
0 голосов
/ 28 мая 2018

У меня есть два домена: пациент и аллергия.Я хочу сохранить аллергию, специфичную для конкретного пациента (электронная почта является уникальным идентификатором для каждого пациента).Подробности поступают из приложения для Android, и одним из параметров является электронная почта.

Если предположить, что пользователь уже существует, как бы я поступил с сервисом по борьбе с аллергией, чтобы иметь возможность это сделать.

Это служба для пациентов, которая успешно регистрирует нового пациента и сохраняет его данные.У меня есть контроллер, который действует как API для приложения Android.

@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 голосов
/ 28 мая 2018

Я предполагаю, что у 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()
}
...