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

相关推荐
Mr_Macallon7 分钟前
C++回顾(基础)(01)
c语言·开发语言·c++·学习
sunoo-2291 小时前
【ARM嵌入式学习笔记第十天】i.MX6ULL eLCDIF控制器驱动RGB LCD全解析(硬件原理+寄存器配置+裸机代码)
arm开发·笔记·学习
kaiyou20262 小时前
用户研究岗秋招,统计分析能力怎么学习和证明?
数据库·python·学习
知识分享小能手2 小时前
C++ 学习教程,从入门到精通,string类和标准模板库 — 完整知识点详解(16)
开发语言·c++·学习
inferno3 小时前
SVN学习笔记(二)
笔记·学习·svn
传奇开心果编程3 小时前
【ArkUI进阶练中学】第12课:应用架构演进与遗留系统迁移
学习·ui·华为·harmonyos
我想我不够好。3 小时前
装一个纯净的系统
学习
小黄蚁4 小时前
使用LVGL模拟示波器创建正弦函数波形
单片机·学习
辣知4 小时前
辣知·化智71 四川广汉三星堆的金铜贝
学习
天天进步20155 小时前
90天AI接单学习路线:从LLM应用到AI Agent
人工智能·学习