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

相关推荐
闫记康7 分钟前
Linux学习笔记day1
linux·笔记·学习
C137的本贾尼9 分钟前
子查询与合并查询:SQL 的高级过滤技巧
数据库·sql
三品吉他手会点灯17 分钟前
C语言学习笔记 - 31.数据类型 - 基本输入输出函数printf与scanf
c语言·开发语言·笔记·学习
小江的记录本31 分钟前
【MySQL】《MySQL日志面试背诵版+思维导图》(核心考点 + MySQL 8.0最新优化)
java·数据库·后端·python·sql·mysql·面试
北山有鸟31 分钟前
常用的快捷键
linux·前端·chrome·单片机·学习
BD_Marathon33 分钟前
SQL学习指南——创建和填充数据库
数据库·sql
qcx2344 分钟前
【AI Daily】每日Arxiv论文研读Top5-2026-05-16
人工智能·学习·ai·agent·aris
我命由我123451 小时前
Android Framework P1 - 低配学习 Framework 方案、开机启动 Init 进程
android·c语言·c++·学习·android jetpack·android-studio·android runtime
芋只因2 小时前
天机学堂学习笔记
java·笔记·学习
员宇宙3 小时前
k8s学习笔记
笔记·学习·kubernetes