我使用 JPA
进行数据库查询,如下所示:
@Query("SELECT " +
"new Report(" +
"sum (r.fraction1)," +
"sum (r.fraction2)) from Report r")
Report calculateTotalReports();
当数据库已满时,它可以正常工作,但是当数据库为空时,应用程序就会崩溃。我如何检查表何时包含行然后选择总和?我尝试使用CASE WHEN ... THEN
,但是JPA
没有提供它。
崩溃日志:
QueryException: could not instantiate class [com.statistic.server.entity.Report] from tuple] with root cause
java.lang.IllegalArgumentException: null at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_201] at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[na:1.8.0_201] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~
最佳答案
我猜你可以在这种情况下使用COALESCE
,那么如果 r.fraction1 为 null,它将返回 0。
@Query("SELECT " +
"new Report(" +
"COALESCE(sum(r.fraction1),0)," +
"COALESCE(sum(r.fraction2),0)) from Report r")
关于java - JPA 检查查询是否为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54889859/