JPA 检查是否为空查询
JPA check if null query
我使用 JPA
这样的数据库查询:
@Query("SELECT " +
"new Report(" +
"sum (r.fraction1)," +
"sum (r.fraction2)) from Report r")
Report calculateTotalReports();
当数据库满时,它工作正常,但当它为空时,应用程序崩溃。我如何检查何时 table 包含行然后 select 总和?我尝试使用 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 为空,它将 return 0。
@Query("SELECT " +
"new Report(" +
"COALESCE(sum(r.fraction1),0)," +
"COALESCE(sum(r.fraction2),0)) from Report r")
我使用 JPA
这样的数据库查询:
@Query("SELECT " +
"new Report(" +
"sum (r.fraction1)," +
"sum (r.fraction2)) from Report r")
Report calculateTotalReports();
当数据库满时,它工作正常,但当它为空时,应用程序崩溃。我如何检查何时 table 包含行然后 select 总和?我尝试使用 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 为空,它将 return 0。
@Query("SELECT " +
"new Report(" +
"COALESCE(sum(r.fraction1),0)," +
"COALESCE(sum(r.fraction2),0)) from Report r")