java - 为什么我执行请求时出现 NullPointerException?
问题描述
我计算从 2 个请求获得的变量的总和,结果被恢复,但是当我想利用它时,会抛出 NullPointerException:
public List<Object[]> buildQuery4SConsistencyCheck(Societe societe,ParamSociete paramSociete,Date
periode) throws TechnicalNGEException {
String sql="select SUM(INTERNAL_AMOUNT) from (select vR.montant_valorise as INTERNAL_AMOUNT"
+ " from sigma02.valorisation_location vR inner join sigma02.eds soc on
vR.societe=soc.id_eds "
+ "inner join sigma02.chantier ch on vR.compte_de_recette=ch.id_eds"
+ " inner join sigma02.edsm on vR.id_edsm=edsm.id_edsm inner join sigma02.eds "
+ "edsR on vR.compte_de_recette=edsR.id_eds where vR.montant_facture !=0 and
vR.statut_traitment "
+ "like 'F' and vR.societe = 11 and vR.date_piece='2018-1-31' union all select "
+ " vDep.montant_valorise as INTERNAL_AMOUNT FROM sigma02.valorisation_location"
+ " vDep inner join sigma02.eds soc on vDep.societe=soc.id_eds "
+ "inner join sigma02.eds as edsDep on vDep.chantier_materiel=edsDep.id_eds "
+ "inner join sigma02.chantier as chDep on vDep.chantier_materiel=chDep.id_eds"
+ " inner join sigma02.edsm on vDep.id_edsm=edsm.id_edsm WHERE vDep.montant_facture<>0"
+ " and vDep.statut_traitment='F' and vDep.societe=11 and vDep.date_piece='2018-1-31' )
as somme";
List<Object[]> result = null;
try {
SQLQuery query = session.createSQLQuery(sql);
result = query.list();
} catch (HibernateException e) {
bloqException(e);
}
return result;
}
在抛出异常的这一行中:
@Autowired
private ValorisationLocationDAO valorisationLocationDAO;
Object[] c=
valorisationLocationDAO.buildQuery4SConsistencyCheck(societe,paramSociete,periode).get(0);
调试后我得到这个结果:
[93648.40, null, null, null, null, null, null, null, null, null]
这是错误:
Caused by: java.lang.NullPointerException
at com.nge.sigma.reprise.util.BatchLogger.log(BatchLogger.java:205) [sigma-
reprise-0.0.14-SNAPSHOT.jar:]
at com.nge.sigma.reprise.util.BatchLogger.logDebug(BatchLogger.java:193)
[sigma-reprise-0.0.14-SNAPSHOT.jar:]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.8.0_221]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.8.0_221]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.8.0_221]
at java.lang.reflect.Method.invoke(Unknown Source) [rt.jar:1.8.0_221]
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317) [spring-aop-4.0.5.RELEASE.jar:4.0.5.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190) [spring-aop-4.0.5.RELEASE.jar:4.0.5.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) [spring-aop-4.0.5.RELEASE.jar:4.0.5.RELEASE]
at org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:52) [spring-aop-4.0.5.RELEASE.jar:4.0.5.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) [spring-aop-4.0.5.RELEASE.jar:4.0.5.RELEASE]
at org.springframework.aop.framework.adapter.AfterReturningAdviceInterceptor.invoke(AfterReturningAdviceInterceptor.java:52) [spring-aop-4.0.5.RELEASE.jar:4.0.5.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) [spring-aop-4.0.5.RELEASE.jar:4.0.5.RELEASE]
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92) [spring-aop-4.0.5.RELEASE.jar:4.0.5.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) [spring-aop-4.0.5.RELEASE.jar:4.0.5.RELEASE]
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207) [spring-aop-4.0.5.RELEASE.jar:4.0.5.RELEASE]
at com.sun.proxy.$Proxy447.logDebug(Unknown Source)
解决方案
这是一个演员表问题,我将方法的返回类型更改为 int
public int buildQuery4SConsistencyCheck(Societe societe,Date periode) throws
TechnicalNGEException {
String sql="select SUM(INTERNAL_AMOUNT) from (select vR.montant_valorise as
INTERNAL_AMOUNT"
+ " from sigma02.valorisation_location vR inner join sigma02.eds soc on
vR.societe=soc.id_eds "
+ "inner join sigma02.chantier ch on vR.compte_de_recette=ch.id_eds"
+ " inner join sigma02.edsm on vR.id_edsm=edsm.id_edsm inner join sigma02.eds "
+ "edsR on vR.compte_de_recette=edsR.id_eds where vR.montant_facture !=0 and
vR.statut_traitment "
+ "like 'F' and vR.societe = 11 and vR.date_piece='2018-1-31' union all
select vDep.montant_valorise as INTERNAL_AMOUNT FROM
sigma02.valorisation_location"
+ " vDep inner join sigma02.eds soc on vDep.societe=soc.id_eds "
+ "inner join sigma02.eds as edsDep on vDep.chantier_materiel=edsDep.id_eds "
+ "inner join sigma02.chantier as chDep on
vDep.chantier_materiel=chDep.id_eds"
+ " inner join sigma02.edsm on vDep.id_edsm=edsm.id_edsm WHERE
vDep.montant_facture<>0"
+ " and vDep.statut_traitment='F' and vDep.societe=11 and
vDep.date_piece='2018-1-31' )
as somme";
int result =-1;
try {
SQLQuery query = session.createSQLQuery(sql);
// cast
result = ((BigDecimal) query.uniqueResult()).intValue();
} catch (HibernateException e) {
bloqException(e);
}
return result;
}
推荐阅读
- javascript - 如何在 React 中使用多个材质的 ui 对话框?
- android - 将警报对话框按钮与样式居中对齐
- php - PHP 和 Twig 数组迭代
- python - python使用多处理将两个参数传递给一个函数,同时拆分一个参数并保持另一个完整
- mysql - 子查询行计数表格两个表连接
- rust - Rust 中具有条件编译的同一函数的不同版本
- php - Phpspreadsheet 如何为合并的单元格设置自动高度?
- r - ggforest() 不断给出“`[.data.frame`(data, , var) 中的错误:选择了未定义的列”
- mysql - MySQL选择变量不总是工作
- react-native - 如何在颤动中扩展小部件的属性并在自定义小部件中使用