Frühjahr CrudRepository .orElseThrow()
Was ist der richtige Weg, um eine exception werfen wenn eine Datenbank-Abfrage leer ist? Ich versuche, die .orElseThrow()
Methode, aber es wird nicht kompilieren :
Meeting meeting = meetingRepository.findByMeetingId(meetingId).orElseThrow(new MeetingDoesNotExistException(meetingId));
Der compiler sagt :
"er Methode orElseThrow(Lieferant) in das Feld Optional, ist nicht anwendbar für die Argumente (MeetingRestController.MeetingDoesNotExistException)
Ist es möglich, dies zu tun mit lambda-Ausdrücken?
CrudRepository :
import java.util.Optional;
import org.springframework.data.repository.CrudRepository;
public interface MeetingRepository extends CrudRepository<Meeting, Long>{
Optional<Meeting> findByMeetingId(Long id);
}
Ausnahme :
@ResponseStatus(HttpStatus.CONFLICT) //409
class MeetingDoesNotExistException extends RuntimeException{
public MeetingDoesNotExistException(long meetingId){
super("Meeting " + meetingId + " does not exist.");
}
}
InformationsquelleAutor szxnyc | 2014-11-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Weitergabe ein lambda-Ausdruck der Typ
Supplier<MeetingDoesNotExistException>
:InformationsquelleAutor Eran
Der Fehler bedeutet, was es sagt.
In der Dokumentation für
orElseThrow
besagt, dass es dauert eineSupplier
als parameter.Haben Sie angegeben, Ihr Ausnahme ist ein
RuntimeException
, das ist nicht einSupplier
. DaherorElseThrow()
ist nicht zutreffend zu diesem argument geben. Sie müsste es einSupplier
, nicht einRuntimeException
.Wäre es einfacher syntax eines lambda-Ausdrucks.
InformationsquelleAutor Jason C