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

相关推荐
于小汐在咯8 分钟前
词根学习笔记 | Agri系列
笔记·学习
霜绛37 分钟前
Unity:Json笔记——Json文件格式、JsonUtlity序列化和反序列化
学习·unity·json·游戏引擎
我命由我123452 小时前
Excel - Excel 列出一列中所有不重复数据
经验分享·学习·职场和发展·word·powerpoint·excel·职场发展
璞致电子2 小时前
fpga开发板ZYNQ 璞致 PZ7010/7020 邮票孔核心板简介-ZYNQ7000系列小系统学习板
linux·嵌入式硬件·学习·fpga开发·fpga·fpga开发板·xilinx开发板
Miki Makimura3 小时前
Reactor 模式实现:从 epoll 到高并发调试
运维·服务器·c++·学习
lubiii_4 小时前
SQLMap常用命令指南(参数及其用法)
sql·web安全·网络安全
jiajixi4 小时前
go-swagger学习笔记
笔记·学习·golang
Mingze03145 小时前
C语言四大排序算法实战
c语言·数据结构·学习·算法·排序算法
东风西巷6 小时前
STranslate(翻译工具OCR工具) 中文绿色版
学习·ocr·电脑·软件需求
程序员东岸6 小时前
学完顺序表后,用 C 语言写了一个通讯录
数据结构·笔记·学习