java - JPA检查是否为空查询
问题描述
我使用JPA
这样的数据库查询:
@Query("SELECT " +
"new Report(" +
"sum (r.fraction1)," +
"sum (r.fraction2)) from Report r")
Report calculateTotalReports();
当数据库已满时,它可以正常工作,但当它为空时,应用程序会崩溃。我如何检查表何时包含行然后选择总和?我试过使用CASE WHEN ... THEN
,但JPA
没有提供。
崩溃日志:
QueryException:无法用根本原因从元组中实例化类 [com.statistic.server.entity.Report]
java.lang.IllegalArgumentException: 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_201] 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[na:1.8.0_201] 在 sun. reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~
解决方案
我猜你可以COALESCE
在这种情况下使用,如果 r.fraction1 为空,它将返回 0。
@Query("SELECT " +
"new Report(" +
"COALESCE(sum(r.fraction1),0)," +
"COALESCE(sum(r.fraction2),0)) from Report r")
推荐阅读
- matplotlib - 尝试在matplotlib中分散两个数组时获取''ValueError(“x和y必须是相同的大小”)“
- java - 无法在 AvroParquetWriter 中使用多个 KMS 密钥和 SSE 的 Hadoop 配置
- angular - AngularJS 到 Angular - 与 CMS 集成的问题
- c# - C# WPF INotifyPropertyChanged 不更新表单
- python - 如何使用方程 python 创建热\网格\彩色地图?
- java - 为 GoogleFit Android 应用程序创建 SessionsAPI(等)
- javascript - 在javascript中定义动态函数
- spring-boot - 如何使用 gradle 项目将生成的片段 .adoc 文件转换为 src/docs/asciidoc 中的 html
- amazon-web-services - AWS CDK S3 BucketDeployment - 失败:无法访问主机:cdk-hnb659fds-assets-xxxxx-us-east-1.s3.amazonaws.com'
- c - LibUSB - 将视频流式传输到微控制器口吃(LibUSBK 批量模式)