有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    首先,PUT方法旨在接收和更新整个实体。对于部分更新,首选补丁方法。你可以阅读更多关于here

    如果希望更新整个实体,那么应该在请求正文中发送整个实体。如果没有,那么您应该按id从db中获取实体,相应地应用更改并保存它。Spring数据repos中的save方法将替换整个实体