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

相关推荐
笨鸟先飞的橘猫5 小时前
只会脚本语言的游戏后端自我提升之路——c++学习(开篇)
学习·游戏
quanjui7 小时前
【医学尝试】基于Segment Anything Model的医学图像分割研究:眼底OCT与X线胸片微调实战
人工智能·笔记·学习
YUS云生7 小时前
大模型学习·第40天:LangChain框架入门——从RAG原理到模型调用的统一接口
学习·langchain
小黄蚁7 小时前
FreeRTOS学习笔记(十二)
笔记·学习
Nebula_g7 小时前
Java实现本地Socket通信(三)
java·开发语言·学习·socket·可视化
茯苓gao7 小时前
嵌入式开发笔记:电机参数辨识与自学习完全指南——从电气参数到机械特性的深度解析
笔记·嵌入式硬件·学习
音视频工程实战7 小时前
PromptQL 新手入门与实战指南
数据库·sql·算法
清川渡水7 小时前
NL2SQL 的正确打开方式:从「AI 猜 SQL」到「置信度闭环」的工程化落地
数据库·人工智能·sql
笨鸟先飞的橘猫7 小时前
游戏后端分布式学习——消息队列在游戏的用法
分布式·学习·游戏
优化Henry8 小时前
学习笔记之VoNR语音业务注册流程
网络·笔记·学习·5g·信息与通信