java代码调用存储过程,有5个参数,最后一个参数是输出结果,可是怎么写都不对,单独跑存储过程有结果

Causedby:org.hibernate.QueryException:Expectedpositionalparametercount:5,actualparame... Caused by: org.hibernate.QueryException: Expected positional parameter count: 5, actual parameters: [2016-11-21, 2016-12-21, 1, and k.CARD_KIND_NAME in ('学生卡', '半价老人卡', '全免老人卡', '关爱卡') ] [{call P_SH_CARD_T(?,?,?,?,?)}]。。
代码如下:
String sql = "{call P_SH_CARD_T(?,?,?,?,?)}";
Query ps = this.entityManager.createNativeQuery(sql);
// Object[] params = new Object[] {
// agoDate, nowDate, 1,
// " and k.CARD_KIND_NAME in ('学生卡', '半价老人卡', '全免老人卡', '关爱卡') " };
// for (int i = 0; i < params.length; i++) {
// ps.setParameter(i + 1, params[i]);
// }
ps.setParameter(1, agoDate);
ps.setParameter(2, nowDate);
ps.setParameter(3, new Integer(1));
ps.setParameter(4, " and k.CARD_KIND_NAME in ('学生卡', '半价老人卡', '全免老人卡', '关爱卡') ");
List<Object> ls = ps.getResultList();
代码执行到最后一句时候就报错,请高手指点!
代码里面的 entityManager是引用的
import javax.persistence.EntityManager;
展开
 我来答
dark19861201
2016-12-21 · TA获得超过2152个赞
知道大有可为答主
回答量:2584
采纳率:79%
帮助的人:1771万
展开全部
CallableStatement   proc   =   null;     
  con   =   connectionPool.getConnection();     
  proc   =   con.prepareCall("{   call   set_death_age(?,   ?)   }");     
  proc.setString(1,   XXX);     
  proc.setInt(2,   XXx);     
  ...   
  proc.execute();

给你找了个示例代码

更多追问追答
追问
这样不行的,我也看到过,我们框架里面用的是entityManager这个来查询结果的
追答
你可以不用你们的框架,再说,这是存储过程,也不会返回结果集给你吧
不过他报的错误是少参数,你最后一个参数也随便加个空字符串试试呗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式