Kotlin ClassCastException при возврате нуля
Я использую структуру Quarkus и у меня естьApplicationScoped
bean-компонент, реализующий интерфейс с методом с сигнатуройloadRatingByUserIdAndVehicleId(userId: Long, vehicleId: Long): Rating?
.
Реализация способа для простоты может быть следующей:
override fun loadRatingByUserIdAndVehicleId(userId: Long, vehicleId: Long) : Rating? = null
Однако когда я вызываю этот метод, вместо получения я получаю следующее сообщение об ошибке:
2023-06-16 10:40:43,566 ERROR [ExceptionHandler] (executor-thread-1) java.lang.ClassCastException: class kotlin.Unit cannot be cast to class com.example.model.Rating (kotlin.Unit is in unnamed module of loader io.quarkus.bootstrap.classloading.QuarkusClassLoader @470a696f; com.example.model.Rating is in unnamed module of loader io.quarkus.bootstrap.classloading.QuarkusClassLoader @5e5beb8a)
at com.example.service.RatingService_Subclass.loadRatingByUserIdAndVehicleId(Unknown Source)
at com.example.service.RatingService_ClientProxy.loadRatingByUserIdAndVehicleId(Unknown Source)
Фактическая реализация метода должна быть:
override fun loadRatingByUserIdAndVehicleId(userId: Long, vehicleId: Long) =
ratingRepository.findByUserIdAndVehicleId(userId, vehicleId)
?.let { ratingMapper.toBusiness(it, rating, context()) }
И реализацияfindByUserIdAndVehicleId
является:
fun findByUserIdAndVehicleId(userId: Long, vehicleId: Long): Rating? {
return list("userId = ?1 and vehicleId = ?2", userId, vehicleId).firstOrNull()
}
ЕслиRating
не может быть найденuserId
иvehicleId
, затемnull
возвращается. В противном случае он преобразуется. Есть ли у вас идеи, почему может возникнуть эта ошибка?
РЕДАКТИРОВАТЬ: Для демонстрации нажмите здесь .