У меня есть проект Java springBoot С репозиторием, который включает логический пользовательский запрос. но система работает с исключением нулевого указателя, кроме возврата «false». это запрос:
@Query(value = "select * from customers_vs_coupons where customer_id =? and coupon_id = ?", nativeQuery = true)
Boolean existsPurchesedCoupon(int customerId, int couponId);
Я назвал метод:
if (customerRepository.customerPurchesedCoupon(customerId, coupon.getId())) {
throw new PurchaseCouponException("can buy only once.");
и это ошибка:
[Request processing failed; nested exception is java.lang.NullPointerException: Cannot invoke "java.lang.Boolean.booleanValue()" because the return value of "com.chana.repositories.CustomerRepository.customerPurchesedCoupon(int, int)" is null] with root cause ```
Ваш запрос
select * from customers_vs_coupons where customer_id =? and coupon_id = ?
предназначен для возврата любого объекта (далее именуемого CustomersVsCoupons), сопоставленного с таблицей customer_vs_coupons, а не с логическим значением.
Если вы хотите создать исключение всякий раз, когда у конкретного клиента уже есть затронутый купон, вы должны преобразовать сигнатуру вашего метода в: