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

相关推荐
Schengshuo6 分钟前
【Oracle11g SQL详解】UPDATE 和 DELETE 操作的正确使用
数据库·sql
野犬寒鸦20 分钟前
从零起步学习计算机操作系统:进程篇(基础知识夯实)
java·服务器·后端·学习·面试
我的xiaodoujiao24 分钟前
API 接口自动化测试详细图文教程学习系列2--相关Python基础知识
python·学习·测试工具·pytest
躺不平的小刘38 分钟前
视觉SLAM十四讲:全攻略 —— 逻辑脉络、学习路线与Ubuntu 18.04实践准备
linux·学习·ubuntu·slam
Betelgeuse7644 分钟前
DjangoBlog学习案例:掌握Django MVT架构与多应用协作实践
学习·架构·django
Y001112361 小时前
Day6-MySQL-函数
数据库·sql·mysql
李昊哲小课1 小时前
NumPy 完整学习笔记
笔记·python·学习·数据分析·numpy
nonono1 小时前
深度学习——SETR(Segmentation Transformer)学习(2020.12)
深度学习·学习·transformer
醉酒柴柴1 小时前
word创建样式以后应用于所有新文件
开发语言·学习·c#·word
蛋白界小百灵1 小时前
【卡梅德】生物带您学习分子钓鱼术:噬菌体展示技术实验操作解析
学习