目前我正在开发一个需要从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();
}