java.lang.NullPointerException - 对JDBC函数的Spring JDBC模板调用

时间:2016-12-07 13:13:37

标签: java database oracle spring-jdbc jdbctemplate

目前我正在开发一个需要从spring框架中的oracle数据库函数中获取记录的部分。我在其中使用包和函数并尝试在jdbc模板中访问它

PackageName - mypakg

FunctionName - myfunc(:parm)//:parm = 3728

SQL: regn.gd.selectupdatesync =从双重调用mypakg.myfunc(?)//在SQLDeveloper中通过 SELECT mypakg.myfunc(3728)从双重结果中获取正确的结果;

但是在java代码中,当编译器到达dQueryForStringPS的BaseService.java内部时,会抛出异常 java.lang.NullPointerException

日志

Exception message :null (e.getMessage())
Exception StackTrace: 
org.prj.cos.state.online.common.dao.BaseDao.getPsJdbcTemplate(BaseDao.java:589),
org.prj.cos.state.online.common.dao.BaseDao.dQueryForStringPS(BaseDao.java:171), 
org.prj.cos.state.online.common.service.BaseService.dQueryForStringPS(BaseService.java:387)

我无法理解异常的确切原因以及为什么spring无法以这种方式调用Oracle函数。这是正确的替代方式还是我需要这样的东西?

实现类中的代码 - ServiceImpl.java

String strId = 
dQueryForStringPS("regn.gd.selectupdatesync", new Object[]{gdEntryFormBean.getPsCd()});

dQueryForStringPS在BaseService.java

中可用
public String dQueryForStringPS(String query, Object[] paramValues) {
    return baseDao.dQueryForStringPS(query, paramValues);
}

BaseDao.java

public String dQueryForStringPS(String query, Object[] paramValues) {
     return getPsJdbcTemplate().queryForObject(SQLSelector.getQuery(query),
                                              String.class, paramValues);
}

protected JdbcTemplate getPsJdbcTemplate() {
    return TransactionLocal.getContext().getPsJdbcTemplate();
}

TransactionLocal.java

public static TransactionContext getContext() {
    return THREADLOCAL.get();
}

0 个答案:

没有答案