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

相关推荐
计算机安禾几秒前
【数据结构与算法】第15篇:队列(二):链式队列的实现与应用
c语言·开发语言·数据结构·c++·学习·算法·visual studio
丝斯20111 分钟前
AI学习笔记整理(78)——Python学习7
人工智能·笔记·学习
唯_ww2 分钟前
COMSOL学习笔记(一)曲线图数据导出及画图
笔记·学习
我没想到原来他们都是一堆坏人10 分钟前
SQL 表结构定义(索引与约束)学习笔记一——索引、外键与级联约束
笔记·sql·学习
二等饼干~za89866829 分钟前
豆包GEO优化源码开发全解析:技术架构、实现逻辑与实操指南
数据库·sql·重构·架构·mybatis·音视频
光影少年1 小时前
平时如何学习新技术?
后端·学习·前端框架
快乐非自愿1 小时前
MySQL优化全攻略:索引、SQL与分库分表的最佳实践
android·sql·mysql
lizhihai_991 小时前
股市学习心得-龙头持股法
学习
HenbCode1 小时前
# Hive 性能优化实战
sql·apache hive
知识分享小能手2 小时前
MongoDB入门学习教程,从入门到精通,MongoDB事务知识点梳理(8)
数据库·学习·mongodb