Ken*_*Ken 3 jpa spring-data-jpa
我有一个JPA查询
@Query(value = "SELECT SUM(total_price) FROM ... WHERE ...", nativeQuery = true)
Run Code Online (Sandbox Code Playgroud)
有匹配的记录时,它可以按预期工作。但是,当没有匹配的记录时,查询返回null。
如何返回零(0),而不是null找不到记录?
您可以将返回类型更改为Optional;
@Query(value = "SELECT SUM(total_price) FROM ... WHERE ...", nativeQuery = true)
Optional<Integer> getSum(...);
Run Code Online (Sandbox Code Playgroud)
或者您可以getSum()用一种default方法包装它;
@Query(..)
Integer getSum(...);
default Integer safeGetSum(..) {
return Optional.ofNullable(getSum(..)).orElse(0);
}
Run Code Online (Sandbox Code Playgroud)
有关存储库中空处理的更多信息
当返回值不是列表或某些包装器(以及下面的一些其他检查器)且没有匹配的记录时,返回值将为null,因此没有巧妙的方法可以defaultValue=0通过@Query
然后,通过返回null指示查询结果不存在。保证返回集合,集合替代项,包装器和流的存储库方法永远不会返回null,而是会返回相应的空表示形式。
本机 SQL 选项是COALESCE返回 arg 列表中的第一个非空表达式
SELECT COALESCE(SUM(total_price),0) FROM ...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
106 次 |
| 最近记录: |