Spring 与 Querydsl:空指针异常
Spring with Querydsl : Null Pointer Exception
我正在尝试在 spring boot data JPA
应用程序中实现搜索过滤器功能和加载网格。为了创建动态查询,我使用 Querydsl
.
我正在根据sFloor和nBuildId查找数据
如果我传递 sFloor,nBuildId 只有匹配的记录应该显示在网格中
如果我没有传递任何值,那么网格应该加载所有值。
我像下面这样尝试因为当我传递数据时我能够过滤数据。但是当我没有传递任何记录时,我得到 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();
}
谁能告诉我为什么我得到的是空指针异常而不是所有数据?
我认为问题是 if (nBuildId != 0)
。 nBuildId
是一个很大的 Integer
,因此在执行检查时,它被拆箱为原始 int
。如果它为空,这将导致 NullPointerException
。对 nBuildId
进行空检查应该可以解决问题,E.G. if (nBuildId != null && nBuildId != 0)
.
我正在尝试在 spring boot data JPA
应用程序中实现搜索过滤器功能和加载网格。为了创建动态查询,我使用 Querydsl
.
我正在根据sFloor和nBuildId查找数据
如果我传递 sFloor,nBuildId 只有匹配的记录应该显示在网格中
如果我没有传递任何值,那么网格应该加载所有值。
我像下面这样尝试因为当我传递数据时我能够过滤数据。但是当我没有传递任何记录时,我得到 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();
}
谁能告诉我为什么我得到的是空指针异常而不是所有数据?
我认为问题是 if (nBuildId != 0)
。 nBuildId
是一个很大的 Integer
,因此在执行检查时,它被拆箱为原始 int
。如果它为空,这将导致 NullPointerException
。对 nBuildId
进行空检查应该可以解决问题,E.G. if (nBuildId != null && nBuildId != 0)
.