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

相关推荐
数厘35 分钟前
2.1SQL 学习:先懂数据库概念再学 SQL
数据库·sql·学习
YoseZang1 小时前
【机器学习】【手工】Streaming Machine Learning 流数据学习 – 应对变化的机器学习方法(一)
人工智能·学习·机器学习
chh5633 小时前
C++--模版初阶
c语言·开发语言·c++·学习·算法
spencer_tseng4 小时前
dameng CREATE USER
sql·dameng
航Hang*4 小时前
Windows Server 配置与管理——第8章:配置Web服务器
运维·服务器·windows·学习·vmware
Elaine3365 小时前
【软件测试系统学习笔记:从理论基础到接口实战】
软件测试·笔记·学习·接口测试
xuhaoyu_cpp_java5 小时前
Maven学习(二)
java·经验分享·笔记·学习·maven
数厘5 小时前
2.15 sql基础查询(SELECT、FROM、字段别名、常量与表达式)
数据库·sql·oracle
西门吹-禅5 小时前
java 微服务学习笔记
java·学习·微服务
雾喔6 小时前
【学习笔记3】AI 工程实战
人工智能·笔记·学习