代码之家  ›  专栏  ›  技术社区  ›  SpringUser

带Querydsl的Spring:Null指针异常

  •  0
  • SpringUser  · 技术社区  · 6 年前

    我正在尝试实现搜索过滤器功能和加载网格 spring boot data JPA 应用程序。用于创建我正在使用的动态查询 Querydsl .

    1. 如果我经过sFloor,nBuildId只有匹配的记录应该显示在网格中

    2. 如果我没有传递任何值,那么网格应该加载所有值。

    null pointer exception .

    房间控制器

    @GetMapping("/getUnclaimedRoomDetails")
    public List<Tuple> populateUnclaimedRoomGridView(@RequestParam(value="nBuildId", required=false) Integer nBuildId,
                                                     @RequestParam(value="sFloor", required=false) String sFloor) {
        return roomService.loadUnclamiedRoomGrid(nBuildId,sFloor);
    
    }
    

    客房服务

    public  List<Tuple> loadUnclamiedRoomGrid(Integer nBuildId, String sFloor) {
    
        QRoom room = QRoom.room;        
        QRoomDepartmentMapping roomDepartmentMapping = QRoomDepartmentMapping.roomDepartmentMapping;
    
        JPAQuery<Tuple> query = new JPAQuery<Tuple>(em);
    
        query.from(room) 
             .where(room.nRoomId.notIn
                         (JPAExpressions.select(roomDepartmentMapping.nRoomId)
                               .from(roomDepartmentMapping)
                         )
               );
    
        if (nBuildId != 0) {
            query.where(room.nBuildId.eq(nBuildId));
        }
    
        if(sFloor != null) {
            query.where(room.sFloor.eq(sFloor));
        }       
    
    return query.fetch();   
    
    }
    

    有谁能告诉我为什么我得到空指针异常而不是所有数据?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Robert Bain    6 年前

    if (nBuildId != 0) . nBuildId 是个大问题 Integer 因此,在执行检查时,它将被解除绑定到原语 int . 如果为空,这将导致 NullPointerException 应该解决问题,例如。 if (nBuildId != null && nBuildId != 0) .