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

相关推荐
QiZhang | UESTC21 分钟前
学习日记day45
学习
菜鸟‍24 分钟前
【论文学习】通过编辑习得分数函数实现扩散模型中的图像隐藏
人工智能·学习·机器学习
知识分享小能手27 分钟前
CentOS Stream 9入门学习教程,从入门到精通,CentOS Stream 9 配置网络功能 —语法详解与实战案例(10)
网络·学习·centos
Dragon online31 分钟前
数据分析师成长之路--从SQL恐惧到数据掌控者的蜕变
数据库·sql
瑶光守护者1 小时前
【学习笔记】5G RedCap:智能回落5G NR驻留的接入策略
笔记·学习·5g
你想知道什么?1 小时前
Python基础篇(上) 学习笔记
笔记·python·学习
SHOJYS1 小时前
学习离线处理 [CSP-J 2022 山东] 部署
数据结构·c++·学习·算法
weixin_409383121 小时前
简单四方向a*学习记录4 能初步实现从角色到目的地寻路
学习·a星
xian_wwq2 小时前
【学习笔记】可信数据空间的工程实现
笔记·学习
Li.CQ2 小时前
SQL学习笔记
笔记·sql·学习