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

相关推荐
陈天伟教授13 小时前
【30天学会机械制图 第15 天】项目四 学会看零件图 任务1 学习零件的基本表达方法 (1)
学习·工程制图·机械制图
小张帅三代13 小时前
yolo基础学习笔记
笔记·学习·yolo
zttbee13 小时前
vue学习(白话功能版)
前端·vue.js·学习·前端框架
ouynagda14 小时前
Linux 进程与线程学习笔记
linux·笔记·学习
迷枫71215 小时前
SQL性能排查记录
java·数据库·sql
手握风云-15 小时前
一条消息的旅程:RabbitMQ 学习与实践(四)
学习
小弥儿1 天前
GitHub今日热榜 | 2026-08-26:AI 大脑与知识管理扎堆
人工智能·学习·开源·github
荷蒲1 天前
【小白量化Qbuddy】利用AI学习中文Python
人工智能·python·学习
中科高级技工学校1 天前
乌鲁木齐中医康复学习经历分享
大数据·学习