Hibernate调用存储过程返回值问题

一个存储过程的示例,数据库是informixCREATEFUNCTIONinformix.a()RETURNINGVARCHAR(20),VARCHAR(20),VARC... 一个存储过程的示例,数据库是informix
CREATE FUNCTION informix.a
()
RETURNING VARCHAR(20),VARCHAR(20),VARCHAR(20),VARCHAR(20)
begin
define a varchar(20);
define b varchar(20);
define c varchar(20);
define d varchar(20);
let a = "a";
let b = "b";
let c = "c";
let d = "d";
RETURN a,b,c,d;
end;
END FUNCTION;

hibernate的方法
@Override
public List sqlQuery(String sql) {
SQLQuery result = getHibernateTemplate().getSessionFactory()
.getCurrentSession().createSQLQuery(sql);
return result.list();
}

============================================
这里遇到一个奇怪的问题,我在存储过程中如果仅仅返回1-2个返回值,调用sqlQuery能取到返回值,但是如果返回值在3个以上时(比如现在为4个),返回的list中取到的Object[]的所有值就变成了最后一个参数的值。

比如如果我仅返回a,b两个参数,则Object[] = {a,b};没有问题
但是如果我返回4个参数,预期的Object[] = {a,b,c,d},但是实际为{d,d,d,d}

实在是百思不得其解,请hibernate大神出现,难道这是一个hibernate的bug ????

注:如果能帮我解决此问题,我会加分的。谢谢
自己探索了一下,应该和hibernate在sqlQuery中对数据库相关存储过程的一些限制有关,我已放弃了这种用法,改用CallableStatement来处理存储过程了。
展开
 我来答
wugdl
2013-04-03 · TA获得超过155个赞
知道小有建树答主
回答量:251
采纳率:0%
帮助的人:135万
展开全部
期待中没用过
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式