【问题标题】:Spring with Querydsl : Null Pointer ExceptionSpring with Querydsl:空指针异常
【发布时间】:2019-02-06 05:27:55
【问题描述】:

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

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

  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();   

}

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

【问题讨论】:

  • 你在哪一行得到了异常?

标签: spring-data-jpa querydsl


【解决方案1】:

我认为问题是if (nBuildId != 0)nBuildId 是一个很大的 Integer,因此在执行检查时,它被拆箱为原始 int。如果它为空,这将导致NullPointerException。对nBuildId 进行空检查应该可以解决问题,例如if (nBuildId != null &amp;&amp; nBuildId != 0).

【讨论】:

  • 它工作正常谢谢。还有一件事是我想要查询结果中的特定列。所以我如何迭代这个 List
  • 我尝试使用 for 每个循环,但得到类强制转换异常 `List queryResult = query.fetch(); for(Tuple row : queryResult) { System.out.println("Build Id " +row.get(room.nBuildId)); }
  • 提出一个单独的问题,因为这与NullPointerException 无关。
  • 好的。 https://stackoverflow.com/questions/52114040/spring-with-querydsl-java-lang-classcastexception
猜你喜欢
  • 2021-01-27
  • 2017-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-17
  • 2018-10-01
  • 2012-07-07
  • 2018-12-31
相关资源
最近更新 更多