JPA 存储库布尔查询 - return 空指针异常

JPA repository Boolean Query - return null pointer exception

我有Java个springBoot项目 使用包含布尔自定义查询的存储库。 但是系统 运行 除了 return “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 = ?

旨在 return 映射到 table customer_vs_coupons 的任何实体(从现在开始称为 CustomersVsCoupons),而不是布尔值。

如果您想在特定客户的优惠券已经受到影响时抛出异常,您应该将方法的签名转换为:

  • Return 一个 CustomersVsCoupons,如果您的查询没有 return null
  • ,则抛出异常
  • Return 一个 Optional,如果您的查询 return 一个非空 Optional
  • 则抛出异常