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

相关推荐
Be for thing6 分钟前
PyTorch自动求导Autograd详解|requires_grad、backward、grad、梯度清零
pytorch·学习·1024程序员节
小嘉丶学长19 分钟前
Day08 · 字符串(二)
服务器·开发语言·python·学习·1024程序员节
poiu12346571 小时前
使用AI辅助学习与资料整理的个人体会
人工智能·学习
海绵宝宝的月光宝盒1 小时前
7-AutoCAD-参考线、多行文字、填充命令应用
经验分享·笔记·学习·职场和发展·课程设计·制造·cad
欣欣之王来了2 小时前
v-bind语法糖::属性名的简写方式
前端·学习·架构·项目·vue3教程
且撷相思红豆枝2 小时前
Simulink学习笔记(一)
笔记·学习·matlab
weixin_448771722 小时前
Spring框架之ApplicationContext源码学习
java·学习·spring
John_Hui2 小时前
MySQL基础知识
数据库·sql·mysql·1024程序员节
泡海椒2 小时前
深度解析JQuick-SQL 逻辑计划到物理计划生成机制|分布式SQL原理
数据库·分布式·sql
m4Rk_3 小时前
【论文阅读】Agent记忆机制(112):MemFit——保留对话原文,用多路检索降低长期记忆成本
论文阅读·人工智能·学习·开源·github