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

相关推荐
嵌入式×边缘AI:打怪升级日志6 分钟前
Linux 常用命令学习笔记(续):查找、压缩、vi 编辑器与其他命令
linux·笔记·学习
AI成长日志17 分钟前
【笔面试算法学习专栏】链表操作·基础三题精讲(206.反转链表、141.环形链表、21.合并两个有序链表)
学习·算法·面试
玛卡巴卡ldf22 分钟前
【Springboot7】ApachePOI文件导入导出
java·spring boot·sql
不会写DN26 分钟前
SQL 单表操作全解
java·服务器·开发语言·数据库·sql
华法林的小助手35 分钟前
[学习笔记]在ros humble里使用qt
笔记·qt·学习
red_redemption35 分钟前
自由学习记录(158)
学习
智慧化智能化数字化方案39 分钟前
向华为学习——解读质量管理培训 IPD基础知识研发质量管理【附全文阅读】
学习·华为ipd流程·ipd基础知识·研发质量管理
Leon-Ning Liu40 分钟前
Oracle 26ai新特性:SQL Firewall(SQL 防火墙)的使用方法
数据库·sql·oracle
小小程序员.¥1 小时前
oracle--函数
数据库·sql·mysql
Leon-Ning Liu1 小时前
Oracle 26ai 的 SQL 语言增强特性
数据库·sql·oracle