求帮忙看一下Hibernate调用存储过程的问题 80

JAVA代码:publicWorksgetWork(Stringid){Object[]params={id};return(Works)baseDao.findByPr... JAVA代码:
public Works getWork(String id){
Object[] params = {id};
return (Works) baseDao.findByProc("PRO_S_WORKS", params, Works.class);
}

public List findByProc(final String procName,final Object[] params,final Class clazz) {
StringBuffer pname = new StringBuffer("{call ");
pname.append(procName).append("(");
for (int i = 0; i < params.length; i++) {
pname.append(i==0?"?":",?");
}
pname.append(")}");

SQLQuery query = getSession().createSQLQuery(pname.toString());

//参数填入
for (int i = 0; i < params.length; i++) {
query.setParameter(i, params[i]);
}
//数据返回格式
if(clazz != null){
query.setResultTransformer(Transformers.aliasToBean(clazz));
}else{
query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
}
List list=query.list(); //这里报错
return list;

}
存储过程:
CREATE OR REPLACE PROCEDURE pro_s_works(
wid IN works.workid%TYPE,
P_cCursor out cGetWorks.cGetWorks_cursor)
AS
BEGIN
UPDATE works w SET w.click=w.click+1 WHERE w.workid=wid;
OPEN P_cCursor for SELECT * FROM works w where w.workid=wid;
END;

错误:Hibernate: {call PRO_S_WORKS(?)}
?? 19, 2016 5:27:14 ?? org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
WARN: SQL Error: 6550, SQLState: 65000
?? 19, 2016 5:27:14 ?? org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: ORA-06550: ? 1 ?, ? 7 ?:
PLS-00306: ?? 'PRO_S_WORKS' ??????????
ORA-06550: ? 1 ?, ? 7 ?:
PL/SQL: Statement ignored
展开
 我来答
匿名用户
2016-05-19
展开全部
调用存储过程可以不写配置文件,直接在类中搞定! 有问题可以百度Hi 我!~
例子
public void saveStoredProcedure(final String adminId, final String menuId, final String toolbars) {
getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
SQLQuery sqlQuery = session.createSQLQuery("{call P_SaveOperatorPopedom(?,?,?)}");
sqlQuery.setString(0, adminId);
sqlQuery.setString(1, menuId);
sqlQuery.setString(2, toolbarsXML);
sqlQuery.executeUpdate();
return null;
}
});
}

重点是这个写法 session.createSQLQuery("{call P_SaveOperatorPopedom(?,?,?)}");
我这边用的是spring提供的HibernateDaoSupport
请采纳答案,支持我一下。
追问
我这个是hibernate4 没有gethibernatetemplate这个方法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式