ZHENGQXTOM 2011-09-01 14:02
浏览 387
已采纳

hibernate 调用存储过程的通用方法

我想作一个在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
为什么总是返回
不能执行查询错误?

  • 写回答

5条回答 默认 最新

  • iteye_15772 2011-09-01 14:28
    关注

    带参数的存储过程是不能这样调的。你可以换个思路用jdbc掉好了,或者就用hibernate获取jdbc连接,然后用jdbc去实现就简单了,具体方法网上很多。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算