学习记录687@spring data jpa 动态传递list参数并判断list是否为空

实际应用中需要在spring data jpa中使用原生sql,传递的参数是list,要根据list判断是否为空来判断是否要使用这个参数。

尝试了很多方法,比如size、length、is null、!=null等等,都要报错,比如could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.DataException: could not extract ResultSet 错误。

最后查阅网上文章使用如下方式得到了正确的结果。

@Query("SELECT *  FROM order \n" +
       "WHERE" +
       "(COALESCE(?1) IS NULL OR (id IN ?1))")
List<Order> getOrders(List<Long> ids);

这里的关键是COALESCE函数,此函数表示传进去的list的值判断,返回第一个不为null的值,如果list为空则返回null。这样就相当于对list进行判断并执行id IN了。

相关推荐

  1. freemarker if 判断list 中的元素是否null

    2024-01-20 09:44:03       21 阅读
  2. 判断cursor是否

    2024-01-20 09:44:03       22 阅读
  3. 合并两个可能List 的方法记录

    2024-01-20 09:44:03       5 阅读
  4. 编程参考 - 如何判断C++的std::funciton是否

    2024-01-20 09:44:03       9 阅读
  5. 【案例·查】判断SQL字段是否

    2024-01-20 09:44:03       18 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-20 09:44:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-20 09:44:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-20 09:44:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-20 09:44:03       20 阅读

热门阅读

  1. 【开发掉坑】go 中 interface 的 nil 判断

    2024-01-20 09:44:03       32 阅读
  2. 【Go】A和*A在作为Receiver和接口实现上的差别

    2024-01-20 09:44:03       37 阅读
  3. JVM与HotSpot

    2024-01-20 09:44:03       31 阅读
  4. Docker部署微服务问题及解决

    2024-01-20 09:44:03       35 阅读
  5. var 和 let 的优缺点

    2024-01-20 09:44:03       39 阅读
  6. python爬虫如何写,有哪些成功爬取的案例

    2024-01-20 09:44:03       30 阅读
  7. mysql怎么开启一个事务

    2024-01-20 09:44:03       37 阅读