public String buildUserId(String tablename,int ws,String numhead,int type1,int type2) {
String sqlProc="{Call GD_P_SYS_SCBH (?,?,?,?,?)}";
String retUserId="";
try{
session= sessionFactory.getCurrentSession();//公共,获取session
SQLQuery sq=session.createSQLQuery(sqlProc);
sq.setString(0, tablename);//从0开始的!
sq.setInteger(1, ws);
sq.setString(2, numhead);
sq.setInteger(3, type1);
sq.setInteger(4, type2);
List list =sq.list();
retUserId=(String)list.get(0);
//sq.executeUpdate(); 无返回值使用
//ts.commit();
}catch (Exception e) {
// if (ts!=null)
// ts.rollback();
e.printStackTrace();
}
return retUserId;
}
异常:
java.lang.IllegalArgumentException: Positional parameter does not exist
解释:位置参数不存在
后来才知道,参数位置从0开始数,所以最后一个就对不上了。
代码如下: