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

相关推荐
凉、介17 分钟前
深入理解 ARMv8-A|异常/中断处理
笔记·学习·嵌入式·arm
Yvonne爱编码20 分钟前
数据库---Day10 索引
数据库·sql·mysql
吃好睡好便好22 分钟前
矩阵的求逆运算
人工智能·学习·线性代数·matlab·矩阵
库奇噜啦呼22 分钟前
【iOS】源码学习-方法交换
学习·ios·cocoa
飞翔中文网27 分钟前
Java学习笔记之泛型
java·笔记·学习
li星野35 分钟前
RAG优化系列:自适应检索(Adaptive Retrieval)——让系统智能选择是否检索
人工智能·python·学习
喜欢踢足球的老罗10 小时前
从移动开发转型 AI Agent 工程师:我做了一个开源学习系统
人工智能·学习
wuxinyan12310 小时前
工业级大模型学习之路030:Streamlit 企业级智能体前端工作台
前端·学习·streamlit·智能体
长安紫薯11 小时前
学习AI日记
学习
星恒随风11 小时前
C语言数据结构排序算法详解(下):冒泡排序、快速排序、归并排序和计数排序
c语言·数据结构·笔记·学习·排序算法