JavaSpringBootPut操作正在为数据库中的所有列触发查询
使用Spring框架,尝试通过只更改有效负载中的一个属性来执行更新rest操作
@RequestMapping(value = "/uiv/activeDiscrepancies/{id}", method = RequestMethod.PUT)
public ResponseEntity update(@PathVariable("id") BigInteger id,
@RequestBody ActiveDiscrepancies activeDiscrepancy)
throws SureException{
//ActiveDiscrepancies adiscrepancies =
activeDiscrepancyRepo.save(activeDiscrepancy, id);
ActiveDiscrepancies adiscrepancies = activeDiscrepancyRepo.findByActiveDiscrepancyId(id);
activeDiscrepancy.setActiveDiscrepancyId( adiscrepancies.getActiveDiscrepancyId() );
activeDiscrepancyRepo.save(activeDiscrepancy);
}
但更新查询被触发
休眠:
update ACTIVE_DISCREPANCIES
set ACTIVE_DISCREPANCY_NAME=?, AUDITED_ENTITY=?, CREATION_TIME=?,
DELTA_TYPE=?, DISCREPANCY=?, EXPIRY_TIME=?, LAST_UPDATED_TIME=?,
MESSAGE_KEY=?, NETWORK=?, RECON_REASON=?, RECON_TYPE=?,
REMARKS=?, RESOURCE_LABEL=?, STATUS=?
where ACTIVE_DISCREPANCY_ID=?
那么对于其他被空值替换的列,如何解决这个问题呢
# 1 楼答案
首先,PUT方法旨在接收和更新整个实体。对于部分更新,首选补丁方法。你可以阅读更多关于here
如果希望更新整个实体,那么应该在请求正文中发送整个实体。如果没有,那么您应该按id从db中获取实体,相应地应用更改并保存它。Spring数据repos中的save方法将替换整个实体