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

相关推荐
M78佐菲5 小时前
51单片机学习笔记:ds18b20要点整理
linux·笔记·嵌入式硬件·学习·51单片机
高亦真5 小时前
今天是学习嵌入式的第37天
linux·学习·算法
xcLeigh6 小时前
让大模型长出手脚,自己写SQL查数据库(Function Calling初探)
数据库·人工智能·sql·时序数据库·timechoai
泡泡鱼(敲代码中)8 小时前
Python 字符串 str 完整学习笔记
python·学习
kyrie_sakura10 小时前
python学习笔记15 -- Anaconda,Jupyter,numpy
python·学习·jupyter·numpy
2601_9626802212 小时前
数据分析面试常考的SQL题和业务题分别是哪几类?
sql·面试·数据分析
PC2005-cloud12 小时前
Rust学习笔记:控制流——if、loop、while、for与match
笔记·学习·rust
彧azz12 小时前
DFS与BFS:图遍历的两大核心算法
数据结构·学习·算法·深度优先·广度优先
kyrie_sakura13 小时前
python学习笔记14 -- FastAPI
笔记·python·学习·fastapi
子非鱼a13 小时前
【SQL注入】 ShadowCart
sql