我有两个领域,患者和过敏。我想特别针对特定患者保存过敏症(电子邮件是每位患者的唯一标识符)。详细信息来自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)
}
答案 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()
}