我必须迭代该请求并创建一个新的实体列表请求,我可以在 JPA 存储库的 saveAll() 方法中使用该请求
我收到 DU 异常
我遇到的错误来自 PMD。
Map<Integer, AlertHeader> alertHeaderMap = findAllAlertRecords(lockAlertRequest);
List<AlertHeader> alertHeaderRequestToUpdate = lockAlertRequest.stream()
.map(request -> {
AlertHeader alertHeader = alertHeaderMap.get(request.getAlertId());
alertValidatorUtil.validateRecordNotFound(alertHeader, request);
alertValidatorUtil.validateUnauthorizedLock(alertHeader, request);
alertHeader.setStatus(AlertStatus.valueOf(request.getStatus()));
alertHeader.setExpediteEmployeeId(request.getExpediteEmployeeId());
alertHeader.setExpdLockDateTime(parseDateTime(request.getExpediteLockDateTime()));
return alertHeader;
})
.collect(Collectors.toList());
alertHeaderRepository.saveAll(alertHeaderRequestToUpdate);
如果使用此代码片段,我不会收到任何错误,无法理解这里的真正原因。
lockAlertRequest.forEach(request -> { AlertHeader alertHeader = alertHeaderMap.get(request.getAlertId()); alertValidatorUtil.validateRecordNotFound(alertHeader, request); alertValidatorUtil.validateUnauthorizedLock(alertHeader, request); alertHeader.setStatus(AlertStatus.valueOf(request.getStatus())); alertHeader.setExpediteEmployeeId(request.getExpediteEmployeeId()); alertHeader.setExpdLockDateTime(parseDateTime(request.getExpediteLockDateTime())); alertHeaderRequestToUpdate.add(alertHeader); });
我假设错误消息来自 PMD。 您应该告诉我们这些事情。
当我用 google 搜索该消息时,第一个搜索结果是这个 PMD 问题:https://github.com/pmd/pmd/issues/1304。 对该问题的回应是,这些通常是误报。 它说:
不幸的是,这条规则是迄今为止 PMD 中最差的。数据流代码库早已过时,并且很少或根本不了解 Java 5 或更高版本中引入的任何 Java 构造(for-each-loops、try-with-resources、lambda...),因此这些误报并不罕见。
我们希望在某个时候对其进行修改,但到目前为止,这样的努力还没有计划。它可能是 2019 年一个很好的 GSoC 项目候选者。
GSoC 是 Google Summer of Code,但我的猜测是这个问题当时并没有得到解决……或者从那时起。
您显然没有在帖子中包含所有错误信息。 它应该提到 DU 异常是针对哪个变量的。 但您肯定在那里使用了后 Java 5 的构造。