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

相关推荐
Nan_Shu_61417 分钟前
学习:VueUse (1)
学习
Li.CQ31 分钟前
SQL学习笔记(二)
笔记·sql·学习
Huangxy__33 分钟前
指针的补充学习
学习
Smartdaili China1 小时前
掌握Java网页抓取:技术与示例完整指南
java·网络·学习·指南·网页·住宅ip·爬虫api
白衣衬衫 两袖清风3 小时前
SQL联查案例
数据库·sql
charlie1145141913 小时前
如何快速在 VS2026 上使用 C++ 模块 — 完整上手指南
开发语言·c++·笔记·学习·现代c++
炽烈小老头4 小时前
【每天学习一点算法 2025/12/15】环形链表
学习·算法·链表
晨曦5432106 小时前
MySQL MOD()函数详解与Python对比
sql
甘露s6 小时前
MySQL深入之索引、存储引擎和SQL优化
数据库·sql·mysql