Spring Boot JPA query 传送值为null的parameter

当parameter tagId 是 null 时 query 会无法找到正确的结果

因为在sql中判断一个值是否为null 不是用 = null 而是 is null 所以一下代码无法获得tag 是null 的tasks

@Query("select t from Task t where t.tag.tagId = ?1 AND t.taskStatus.taskStatusId = ?2 AND t.board.boardId = ?3")
    List<Task> findByTagIdAndTaskStatus(Long tagId, Long taskStatusId, Long boardId);

小小改动一下,再query中加入一个判断tagId是否为null 的sentance 来判断,以下是正确代码

@Query("select t from Task t where ((?1 is null AND t.tag is null) OR t.tag.tagId = ?1) AND t.taskStatus.taskStatusId = ?2 AND t.board.boardId = ?3")
    List<Task> findByTagIdAndTaskStatus(Long tagId, Long taskStatusId, Long boardId);

 

posted @ 2021-11-29 22:46  小白冲冲  阅读(626)  评论(0编辑  收藏  举报