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

相关推荐
cyr___11 分钟前
Unity教程(二十六)技能系统 黑洞技能(上)基础实现
学习·游戏·unity·游戏引擎
星幻元宇VR16 分钟前
VR党建蛋椅|以沉浸式体验推动党建学习方式创新
科技·学习·安全·vr·虚拟现实
cyber_两只龙宝30 分钟前
【Oracle】 Oracle之SQL的子查询
linux·运维·数据库·sql·云原生·oracle
大学生小郑1 小时前
如何定义图像质量,如何评价图像质量
图像处理·学习·音视频·视频
三品吉他手会点灯1 小时前
C语言学习笔记 - 9.C概述 - 常见问题答疑
c语言·笔记·学习
网络工程小王2 小时前
【hermes多智能体协作】个人学习笔记
笔记·学习·ai·智能体·hermes
Fanfanaas2 小时前
Linux 系统编程 进程篇(五)
linux·服务器·c语言·网络·学习·进程
Amazing_Cacao2 小时前
品鉴师体系闭环:拒绝刻板记忆,打磨具备强悍迁移性的底层判断语言
笔记·学习
一只fish2 小时前
SQL 性能优化实战:从入门到极致的七重境界
数据库·sql·性能优化
NCIN EXPE2 小时前
SQL sever数据导入导出实验
数据库·sql·oracle