Kotlin ClassCastException при возврате нуля

Я использую структуру Quarkus и у меня естьApplicationScopedbean-компонент, реализующий интерфейс с методом с сигнатурой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возвращается. В противном случае он преобразуется. Есть ли у вас идеи, почему может возникнуть эта ошибка?

РЕДАКТИРОВАТЬ: Для демонстрации нажмите здесь .

0 ответов

Другие вопросы по тегам