Currently I am working on a section where I need to fetch records from oracle database function in spring framework. I am using package and function inside it and trying to access the same in a jdbc template
PackageName - mypakg
FunctionName - myfunc(:parm) //:parm= 3728
SQL: regn.gd.selectupdatesync= SELECT mypakg.myfunc(?) from dual // Gives correct result in SQLDeveloper via SELECT mypakg.myfunc(3728) from dual;
However in java code, when compiler reaches inside BaseService.java at dQueryForStringPS, it throws exception java.lang.NullPointerException
Logs
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)
I am unable to understand the exact cause of exception and why spring is not able to call a Oracle function viz this way. Is this correct alternative way or should I need to so something else?
Code inside Implementation class- ServiceImpl.java
String strId =
dQueryForStringPS("regn.gd.selectupdatesync", new Object[]{gdEntryFormBean.getPsCd()});
dQueryForStringPS is available inside 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();
}