'Kotlin Type Mismatch: Taking String from URL path variable and using it as an ID

My Spring Boot Application in Kotlin has a POST endpoint defined like this:

fun postTermin( @PathVariable("pathID") pathID: String, @Validated @RequestBody termin: RequestBody): ResponseEntity<Appointment> {
    return ResponseEntity(HttpStatus.NOT_IMPLEMENTED)
}

I'd like to take that "pathID" and use it to find an entity from a repository like so:

myRepository.findById(pathID)

The CRUDRepository I'm calling there is for an Entity "Dealer" where the ID is defined as:

 @Id
 @Column(name = "id", length = 10, nullable = false)
 open var id: String = ""

The Problem: I get this compile error:

Kotlin: Type mismatch: inferred type is Optional<Dealer!> but Dealer? was expected

What's the problem here? Why the "Optional"?



Solution 1:[1]

The comment by Slaw really helped.

As described in Spring Data JPA How to use Kotlin nulls instead of Optional there's also a "findByIdOrNull" function for CRUDRepository, i had missed that. For my use case, that works.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Lars