【棘手问题】Spring JPA一级缓存导致获取不到数据库表中的最新数据,对象地址不发生改变
一、问题背景
项目的数据可以通过前端表单进行增删改查,亦可以通过Excel表格上传的方式进行项目数据增改。两种方式对数据库数据进行操作。
项目可以通过字段 项目ID或 项目标识字段均能够查找到唯一项目记录。
问题发生于:
修改项目的负责人数据时,与其关联的资产数据的负责人要同步跟随更新。就在判断来自Excel表中的项目负责人和数据库表中的负责人是否一致时,出现了异常,不一致的分支条件始终没进入。
二、解决步骤
2.1 debug
这种问题,必须debug看其所调用的函数内部对象数据的变化。
首先看一段代码,核心函数是createOrUpdateAssetProjectByExcel(assetProject),功能顾名思义。
public ResponseEntity<Object> importExcel(List<AssetProjectDto> assetProjectDtoList, boolean updateSupport) {
if (CollectionUtils.isEmpty(assetProjectDtoList)){
throw new BadRequestException("导入的表格为空");
}
try {
assetProjectDtoList.stream(