学习记录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 错误。

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

java 复制代码
@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了。

相关推荐
日拱一卒的小田9 小时前
ZYNQ学习笔记4-ZYNQ的SD卡控制器1
笔记·学习
拼图20911 小时前
Git常用语法
分布式·git·学习
xcLeigh11 小时前
聊聊国产化替换:好用数据迁移工具KDMS怎么帮咱们搞定评估难
数据库·sql·数据迁移·kes·kdms
Vcaker12 小时前
Linux学习29-kubernetes网络
学习
独泪了无痕13 小时前
SQL函数实战:GREATEST与LEAST的技巧
数据库·sql·mysql
dadaobusi15 小时前
学习:奈奎斯特
学习
Databend16 小时前
Databend 原生数据血缘:追溯指标来源,检查变更影响
大数据·数据库·sql
镜舟科技16 小时前
Semantic View 技术解析(二):业务口径如何进入数据库执行路径
数据库·sql·agent
传奇开心果编程17 小时前
【Go入门练中学】第2课:条件与循环
后端·学习·golang
小小de风呀17 小时前
de风——【从零开始学C++】(二十)红黑树封装map和set
c++·学习