学习记录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 分钟前
Qt Designer 基础操作学习笔记
开发语言·笔记·qt·学习·microsoft
WJSKad123513 分钟前
Focus瓶颈轻量化改进YOLOv26通道压缩与残差学习协同突破
学习·yolo
愚者游世23 分钟前
<algorithm> 中 remove、remove_if、remove_copy、remove_copy_if 详解
c++·学习·程序人生·职场和发展·visual studio
云边散步23 分钟前
godot2D游戏教程系列二(13)
笔记·学习·游戏·游戏开发
gameboy03125 分钟前
网络爬虫学习:应用selenium获取Edge浏览器版本号,自动下载对应版本msedgedriver,确保Edge浏览器顺利打开。
爬虫·学习·selenium
小蜗牛~向前冲27 分钟前
大模型学习系列-Embedding与向量数据库
人工智能·python·神经网络·学习·机器学习·embedding
敬业小码哥29 分钟前
记一次:clion使用rust插件配置环境并开发
学习·rust
华科易迅32 分钟前
SQL学习
java·sql·学习
程序员花萍雨42 分钟前
【SQL 极简速通 1/5】从手动搬砖到声明式“点菜”
sql
_李小白44 分钟前
【AI大模型学习笔记之平台篇】第三篇:Minimax
人工智能·笔记·学习