首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有Querydsl的Spring :空指针异常

带有Querydsl的Spring :空指针异常
EN

Stack Overflow用户
提问于 2018-08-31 08:03:22
回答 1查看 1.5K关注 0票数 0

我试图在spring boot data JPA应用程序中实现搜索过滤功能和加载网格。为了创建动态查询,我使用了Querydsl

我正在根据sFloor和nBuildId搜索数据。

  1. 如果我要传递sFloor,nBuildId只应该在网格中显示匹配记录。
  2. 如果我没有传递任何值,那么网格应该加载所有值。

在传递数据时,我尝试了如下所示:我能够过滤数据。但是当我没有传递任何记录时,我就得到了null pointer exception

RoomController

代码语言:javascript
复制
@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);

}

RoomService

代码语言:javascript
复制
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();   

}

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-31 08:31:57

我认为问题是if (nBuildId != 0)nBuildId是一个很大的Integer,所以当执行检查时,它被解封到一个原始的int中。如果为null,这将导致NullPointerException。对nBuildId的空检查应该可以修复一些问题,例如,if (nBuildId != null && nBuildId != 0)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52111072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档