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

相关推荐
happymaker06261 小时前
web前端学习日记——DAY04
前端·学习
solicitous3 小时前
遇到一个口头机遇
学习·生活
观书喜夜长4 小时前
大模型应用开发学习-基于 LangChain 框架实现的交互式问答脚本
python·学习
yhole4 小时前
SQL中的REGEXP正则表达式使用指南
数据库·sql·正则表达式
FPGA小迷弟5 小时前
FPGA 时序约束基础:从时钟定义到输入输出延迟的完整设置
前端·学习·fpga开发·verilog·fpga
炽烈小老头6 小时前
【每天学习一点算法 2026/03/22】前 K 个高频元素
学习·算法
探索宇宙真理.6 小时前
SiYuan SQL漏洞 | CVE-2026-29073复现&研究
数据库·经验分享·sql·eureka·安全漏洞·siyuan
神舟之光6 小时前
Java面向对象编程知识补充学习-2026.3.21
java·开发语言·学习
网络工程小王6 小时前
【大数据技术详解】——Kibana(学习笔记)
大数据·笔记·学习
im_AMBER6 小时前
Leetcode 144 位1的个数 | 只出现一次的数字
学习·算法·leetcode