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

相关推荐
四谎真好看12 小时前
Redis学习笔记(实战篇5 + 高级篇)
redis·笔记·学习·学习笔记
conlin day12 小时前
Spring AI学习(二)
学习
夫礼者12 小时前
【极简监控】选连接池送深度监控?用 Druid 补齐单体应用全局 SQL 统计的最后拼图
java·数据库·sql·druid
鹅天帝12 小时前
20260404网安学习日志——RCE漏洞
学习·安全·网络安全
m0_7167652312 小时前
C++基础入门案例--通讯录管理系统详解
开发语言·c++·经验分享·笔记·学习·青少年编程·visual studio
婷婷_17212 小时前
深入理解VLAN:从原理到实践(基于DesignWare Ethernet QoS)
网络·学习·程序人生·ethernet·芯片·gmac
Flandern111112 小时前
Go程序员学习AI大模型项目实战:从环境管理到核心架构抽象
人工智能·python·学习·ai·golang
码农学院13 小时前
一些在平常开发过程中会用到的比较经典的 SQL 语句,常常用于实现一些很特别的功能。
数据库·sql
vortex513 小时前
原创 Burp 插件 | Injector - Path Collector:专攻 URL 路径与 XFF 头部 SQL 注入
数据库·sql·网络安全·渗透测试
计算机安禾13 小时前
【数据结构与算法】第26篇:静态查找(二):插值查找与斐波那契查找
c语言·开发语言·数据结构·学习·算法·重构·visual studio