ฉันกำลังพยายามใช้ฟังก์ชันตัวกรองการค้นหาและโหลดตารางในแอปพลิเคชัน 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();
}
ใครช่วยบอกฉันหน่อยได้ไหมว่าทำไมฉันถึงได้รับข้อยกเว้นตัวชี้ null แทนที่จะเป็นข้อมูลทั้งหมด