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

相关推荐
M malloc20 分钟前
软件测试学习第一期
软件测试·学习·可用性测试
头疼的程序员26 分钟前
计算机网络:自顶向下方法(第七版)第六章 学习分享(三)
网络·学习·计算机网络
醇氧30 分钟前
【学习】现代计算机有多少种架构
学习·架构
gjc5921 小时前
如何写好SQL:企业内训文档
数据库·sql
EnglishJun1 小时前
ARM嵌入式学习(十二)--- IMX6ULL定时器使用
学习
科技林总1 小时前
【系统分析师】13.2 概要设计的主要内容
学习
SUNNY_SHUN2 小时前
ICLR 2026 | Judo: 7B小模型工业缺陷问答超越GPT-4o,用对比学习+强化学习注入领域知识
论文阅读·人工智能·学习·视觉检测·github
嗷嗷哦润橘_2 小时前
图解PD分离分布式架构及端口配置解析
人工智能·学习·pd分离
圣光SG2 小时前
ES6+ 基础学习笔记
笔记·学习·es6
zx_zx_1232 小时前
红黑树的学习
学习