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