首页 > 解决方案 > 在 Spring Boot 中使用休眠的 JPA 未处理查询抛出空指针异常

问题描述

我使用 get hibernate 来获取数据。当我使用返回不查询结果的特定参数调用数据时,它显示以下错误

java.lang.NullPointerException
    at com.rms.service.impl.ProductsServiceImpl.getAppProductItems(ProductsServiceImpl.java:143)
    at com.rms.controller.RmsMobileAppController.getAppProductItems(RmsMobileAppController.java:59)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62).......

这是我的实体

@Entity
@Table(name = "RmsOptions")
public class RmsOptionsEntity implements Serializable { 
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private long id;    
    private String hardCode;
    private String softCode;
    private String codeDes;
    private String status;
    // getter setter
}

这是我的存储库

public interface RmsOptionsRepo extends JpaRepository<RmsOptionsEntity, Long>{
    
      @Query(" FROM RmsOptionsEntity WHERE hardCode = ?1 AND softCode =?2 AND status = 1")
      RmsOptionsEntity getcodeDes(String hardCode,String softcord);
    
    }

我从ProductsServiceImpl类调用,这是我的服务类。如果参数值匹配它工作正常。当发现参数值不匹配时,它会显示错误... 这是我的服务

    @Service
public class ProductsServiceImpl implements ProductsService {   
  @Autowired
private ProductCategoriesRepo productCategoriesRepo;

    @Autowired
    private RmsOptionsRepo rmsOptionsRepo;
    
    @Override
    public List<ProductAppItemsModel> getAppProductItems(String restaurantId, String restaurantBranchId) {

        List<ProductAppItemsModel> list = new ArrayList<>();
        List<ProductCategoriesInfo> productCatgoriesList = productCategoriesRepo.getProductCatgoriesList(restaurantId, restaurantBranchId);
        try {
        
        for (ProductCategoriesInfo categoriesInfo:productCatgoriesList){            
            List<ProductsInfo> products = productsRepo.getProducts(restaurantId, restaurantBranchId, categoriesInfo.getProductCategoryId());

         } 
        }catch (Exception e){
            e.printStackTrace();
        }
        return list;
    }

}

如何处理空指针异常。我现在才用try...catch。请建议我..

标签: javaspring-boot

解决方案


如果您使用 jpaRepo它更好的方法来创建方法

公共接口 RmsOptionsRepo 扩展 JpaRepository<RmsOptionsEntity, Long>{

      @Query("SELECT * FROM RmsOptionsEntity WHERE hardCode = ?1 AND softCode =?2 AND status = 1")
      RmsOptionsEntity findCodeDes(String hardCode,String softcord);
    
    }

推荐阅读