Mono 类型中的 flatMap() 方法<PortCall>不适用于参数 (<no type> prev)->{})



我得到这个错误:方法flatMap()在类型Mono不适用的参数((prev)->{})

public Mono<PortCall> updateByFindById(String gsisKey, PortCall portCall) {
PortCall next = portCallRepository.findById(portCall.getNextPortCall().getNextScheduleEntryKey()).toProcessor().block();
return portCallRepository.findById(gsisKey)
.switchIfEmpty(Mono
.error(new DataNotFoundException(HttpStatus.NOT_FOUND, PortCallConstants.PORT_CALL_NOT_FOUND)))
.flatMap(retrivedPortCall -> {

PortCall prev1 = portCallRepository.findById(retrivedPortCall.getPreviousPortCall()
.getPreviousScheduleEntryKey()).flatMap(prev->{
prev.setNextSiteCode("");
prev.getNextPortCall().setNextScheduleEntryKey(next.getGsisKey());
prev.getNextPortCall().setTerminalCode(next.getSiteRkstCode());
prev.getNextPortCall().setCityCode(next.getCityCode());
prev.getNextPortCall().setCityName(next.getCity());
prev.getNextPortCall().setTerminalName(next.getSiteName());
prev.getNextPortCall().setArrivalVoyage(next.getArrivalVoyageCode());
prev.getNextPortCall().setDepartureVoyage(next.getDepartureVoyageCode());
portCallRepository.save(prev);
});

表达式(( prev)->{})表示在flatmap调用中你的lambda实现没有返回任何东西,而flatmap契约期望应该返回? super Optional<U>

根据Toerktumlare的建议,portCallRepository.save(prev);应该返回一个Optional,如果返回一个具体的值,尝试使用map代替,如果没有返回,添加一个返回语句。

最新更新