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

相关推荐
阿里云大数据AI技术2 小时前
EMR Serverless Spark AI Function 的双维降本实践
人工智能·sql·spark
炎武丶航2 小时前
汽车功能测试学习(1):FCW前方碰撞预警
功能测试·学习·汽车
qq_185198698 小时前
SpingBoot3入门学习一
学习
噗噗夹的TA之旅8 小时前
Shader 学习 21:自定义 Render Feature
学习·游戏·unity·c#·游戏引擎·图形渲染
jnrjian9 小时前
psql 执行多个 sql 文件
数据库·sql
码农小韩9 小时前
AIAgent应用开发——大模型理论基础与应用(七)
python·学习·ai·大模型·agent
流云鹤10 小时前
05Java学习day(5)
java·学习
only-lucky10 小时前
QML深入学习五(Controls模块)
前端·javascript·学习
Yolanda_202211 小时前
Python学习-第九部分-错误处理与异常处理
开发语言·python·学习
一只小菜鸡..11 小时前
南京大学 操作系统 (JYY) 学习笔记:CPU 的局限、GPU 与 AI 时代的算力革命
人工智能·笔记·学习