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

相关推荐
宇木灵5 分钟前
考研数学-高中数学回顾函数的微分day8(完结)
笔记·学习·考研·数学·函数·导数·微分
今儿敲了吗17 分钟前
28| A-B数对
数据结构·c++·笔记·学习·算法
The_Uniform_C@t223 分钟前
AWD | ATT&CK实战系列--蓝队防御(一)
网络·学习·网络安全
m0_5287490044 分钟前
sql基础查询
android·数据库·sql
今儿敲了吗1 小时前
27| 魔法封印
数据结构·c++·笔记·学习·算法
2501_918126911 小时前
stm32能做次声波检测器吗?
c语言·stm32·单片机·嵌入式硬件·学习
好好学习天天向上~~1 小时前
13_Linux_学习总结_进程终止
linux·学习
今儿敲了吗1 小时前
30| 木材加工
数据结构·c++·笔记·学习·算法
锅包一切1 小时前
PART7 队列
c++·学习·算法·leetcode·力扣·刷题·队列
xhyu611 小时前
【学习笔记】推荐系统 (3.召回:矩阵补充、线上服务、双塔模型)
笔记·学习·矩阵