关于ibatis的错误,无效的列类型
sqlmap:
<sqlMap namespace="om_OnlineVO">
<parameterMap class="java.util.HashMap" id="bevymap">
<parameter property="uid" jdbcType="NUMBER" javaType="java.lang.Integer" mode="IN" />
<parameter property="u_showblance" jdbcType="VARCHAR2" javaType="java.lang.String" mode="OUT" />
<parameter property="u_rsstring" jdbcType="VARCHAR2" javaType="java.lang.String" mode="OUT" />
<parameter property="u_ret" jdbcType="NUMBER" javaType="java.lang.Integer" mode="OUT" />
</parameterMap>
<procedure id="select_info_onlineall" parameterMap="bevymap">
{call p_service.sp_coselectbevy(?,?,?,?)}
</procedure>
</sqlMap>
存储过程:
procedure sp_coselectbevy(member_id number,showblance out varchar2,rsstring out varchar2,ret out integer)
is
代码:
Map map = new HashMap();
int int_id = Integer.parseInt(u_id);
map.put("uid",int_id);
this.queryForObject(SELECT_ONLINE_USER,map);
String u_showblance = (String)map.get("u_showblance");
String u_rsstring = (String)map.get("u_rsstring");
int u_ret = (Integer)map.get("u_ret");
错误:
13:15:15,781 ERROR [STDERR] com.ibatis.dao.client.DaoException: Failed to execute queryForObject - id [select_info_onlineall], parameterObject [{uid=10020}]. Cause: com.ibatis.common.jdbc.exception.Nested
SQLException:
--- The error occurred in sqlmap/sql/X_Online.xml.
--- The error occurred while executing query procedure.
--- Check the {call p_service.sp_coselectbevy(?,?,?,?)}.
--- Check the output parameters (register output parameters failed).
--- Cause:
java.sql.SQLException: 无效的列类型
请问下这是哪里的原因导致的呢?静待高人....
------解决方案--------------------
给你一个蠢笨的办法吧
1 修改你的存储过程,减少他们的参数数量
2 修改你的程序,减少调用的参数
3 运行
4 如果成功,则逐个增加参数,直到出现异常,即可确定到底是哪个参数出的问题。
你的参数不多,我想不需要多少测试
------解决方案--------------------
java code贴全一点.
你看你的MAP 中有没有响应的key