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

相关推荐
陈年老古董2 分钟前
Hive 分区表学习笔记:语法、操作、二级分区与动态分区
hive·笔记·学习
li星野15 分钟前
The 3 Common Tenses — Notes & Supplements
学习
小弥儿16 分钟前
GitHub今日热榜 | 2026-10-09:PS5 移植登顶,AI 创作工具占三席
人工智能·学习·开源·github
全栈道36 分钟前
AI 时代,软件开发应该如何学习
人工智能·学习
java资料站1 小时前
四、Spring AIAlibaba · Tools(工具调用)
数据库·sql·spring
存在morning1 小时前
【OLAP 学习笔记】Doris:数据湖之上的分析查询引擎
笔记·学习
代码山河1 小时前
Java语言特点:跨平台、面向对象、安全性详解
java·学习·架构·教程·面向对象·项目
每天题库1 小时前
登高架设作业考试题库大全 核心考点真题刷题备考通关秘籍
学习·安全·考试·题库·考证
andrsted1 小时前
练题簿在线免费刷题:听读练题支持暂停续播、循环播放,让自己的题库听得更方便
学习·微信小程序·小程序·刷题·在线刷题
李日华大战鸡红13 小时前
FOC状态空间方程模型推导(学习记录)
python·学习·线性代数