我只需要记录那些将在更新API调用期间更新的字段.例如,如果我的表中有10列,但在API调用中只更新了3列,则应该只记录这3个字段.
我试过这样做,但它不能覆盖所有条件,有时还会给出空值.
在这里,我在为更新调用Get和Set函数之前判断现有Employee值是否等于即将到来的有效负载的值,但如果任何值将为空,则抛出错误.
已try 的代码
//existingOrgEmployee is DB mysql entry
// and employeeInfo is coming Request from Api Payload
if (employeeInfo.getEmployeeFirstName() != null) {
if(!existingOrgEmployee.getFirstName().equals(employeeInfo.getEmployeeFirstName())){
log.info("EmployeeFirstName Updated for Orgemployee :
"+existingOrgEmployee.getOrgEmployeeId());
}
existingOrgEmployee.setFirstName(employee Info.getEmployeeFirstName());
}
在有效负载中,所有字段都将存在,但只有数据库列中不同或为空的字段将被更改,这就是为什么我在设置函数之前应用了IF条件
这是Service Class内的更新函数
private void updateExistingEmployee(OrgEmployeeMap existingOrgEmployee, RequestMessage requestMessage) {
try {
EmployeeInformation employeeInfo = requestMessage.getData().get(0).getDemographicData().getEmployeeInformation().get(0);
if (employeeInfo.getEmployeeFirstName() != null) {
if(!existingOrgEmployee.getFirstName().equals(employeeInfo.getEmployeeFirstName())){
log.info("EmployeeFirstName Updated for Orgemployee :
"+existingOrgEmployee.getOrgEmployeeId());
}
existingOrgEmployee.setFirstName(employee Info.getEmployeeFirstName());
}
if (employeeInfo.getEmployeeLastName() != null) {
existingOrgEmployee.setLastName(employeeInfo.getEmployeeLastName());
}
if (employeeInfo.getDOB() != null) {
existingOrgEmployee.setDob(employeeInfo.getDOB());
}
if (employeeInfo.getGender() != null) {
existingOrgEmployee.setGender(employee Info.getGender());
}
if (employeeInfo.getEmail() != null) {
if(!existingOrgEmployee.getEmail().equals(employeeInfo.getEmail())){
log.info("Email Updated for Orgemployee : "+existingOrgEmployee.getEmail());
}
existingOrgEmployee.setEmail(employeeInfo.getEmail());
}
orgEmployeeMapRepository.save(existingOrgEmployee);
log.info("Updated Employee : " + existingOrgEmployee);
} catch (JSONException e) {
log.error("error in processing the request error", e.getMessage());
}catch (Exception ex) {
log.error("An unexpected error occurred: " + ex.getMessage(), ex);
}
这也不是优化的方法,我如何记录更新的字段?