IntelliJ误报SpringBoot中MongoTemplate相关代码不可达
IntelliJ错误判定MongoTemplate查询结果始终非空
以下是业务代码:
public PsaDTO save(PsaDTO psaDTO) { Query query = new Query(Criteria.where("numPratica").is(psaDTO.getNumPratica())); myLogger.info(myLogger.msgBuilder(MyLogger.SELECT_ID, Constants.PSA), String.valueOf(psaDTO)); Psa psaSuDb = mongoTemplate.findOne(query, Psa.class); if (Objects.nonNull(psaSuDb)) { throw exceptionThrower.alreadyOnDbFoundEx(Constants.PSA); } Psa psa = objectTransformer.toDAO(psaDTO); myLogger.info(myLogger.msgBuilder(MyLogger.INSERT, Constants.PSA), String.valueOf(psaDTO)); psa = mongoTemplate.save(psa); return objectTransformer.toDTO(psa); }
IntelliJ将对象psaSuDb判定为“始终非空”,并对Objects.nonNull(psaSuDb)给出警告:Condition 'Objects.nonNull(psaSuDb)' is always 'true'。
但该判定完全错误,因为当psaSuDb为null时,以下插入逻辑代码是可以被执行到的(已通过调试验证):
Psa psa = objectTransformer.toDAO(psaDTO); myLogger.info(myLogger.msgBuilder(MyLogger.INSERT, Constants.PSA), String.valueOf(psaDTO)); psa = mongoTemplate.save(psa); return objectTransformer.toDTO(psa);
推测这是IntelliJ针对mongoTemplate的BUG。
内容的提问来源于stack exchange,提问作者Alessandro Armari
相关产品推荐
相关产品推荐

