我想作一个在hibernate中调用存储过程的通用方法
public class callbackfunc implements HibernateCallback {
private String funname;
Map param ;
public callbackfunc(String func,Map param ){
this.funname=func;
this.param=param;
}
public Object doInHibernate(Session session) {
Object o=new Object();
try {
String sql = "{call "+this.getFunname()+ "}";
SQLQuery query=session.createSQLQuery(sql);
Set> s = param.entrySet();
for(Entry e :s){
query.setParameter(e.getKey(), e.getValue());
}
List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
list = query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP).list
return list;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
public Map<String, Object> getParam() {
return param;
}
public void setParam(Map<String, Object> param) {
this.param = param;
}
public String getFunname() {
return funname;
}
public void setFunname(String funname) {
this.funname = funname;
}
}
以上是回调函数
public List> excuteFun(String funname,Map param) {
return getHibernateTemplate().execute(new callbackfunc(funname,param));
}
以上是hibernate调用存储过程的方法
main{
Map m=new HashMap();
m.put("dnpno", "dfv");
cs.excuteFun("WF_DENPNO_SAIBAN_UPDATE('5030',1,=>:dnpno)", m );
}
以上是调用WF_DENPNO_SAIBAN_UPDATE存储过程的测试main方法
WF_DENPNO_SAIBAN_UPDATE 存储过程定义如下
WF_DENPNO_SAIBAN_UPDATE( dnpkbn in varchar2, cnt in number,dnpno out varchar2 )
输入两个参数 dnpkbn cnt
返回字符串型dnpno
为什么总是返回
不能执行查询错误?