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

相关推荐
Luna-player12 小时前
第3章 Spring Boot的Web应用支持,个人学习笔记
前端·spring boot·学习
weixin_4434785112 小时前
flutter组件学习之卡片与列表
javascript·学习·flutter
Luna-player13 小时前
[特殊字符] Spring Boot 静态资源默认映射规则详解
学习
苦瓜小生13 小时前
【黑马点评学习笔记 | 实战篇 】| 7-达人探店
redis·笔记·后端·学习
AI-Ming13 小时前
注意力机制拓展-大模型知识点(程序员转行AI大模型学习)
人工智能·学习
ADHD多动联盟13 小时前
多动症孩子的运动干预是什么?主要有怎样的方法?
学习·学习方法·玩游戏
炽烈小老头13 小时前
【每天学习一点算法 2026/03/20】单词搜索
学习·算法
xiaoxiaoxiaolll13 小时前
最新《Nature Communications》:多元素共生策略为金属材料穿上“抗疲劳铠甲”
学习
weixin_4588726113 小时前
东华复试OJ二刷复盘14
学习
元契13 小时前
英语基础语法学习0
学习