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; 展开
代码如下:
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; 展开
1个回答
展开全部
CallableStatement proc = null;
con = connectionPool.getConnection();
proc = con.prepareCall("{ call set_death_age(?, ?) }");
proc.setString(1, XXX);
proc.setInt(2, XXx);
...
proc.execute();
给你找了个示例代码
更多追问追答
追问
这样不行的,我也看到过,我们框架里面用的是entityManager这个来查询结果的
追答
你可以不用你们的框架,再说,这是存储过程,也不会返回结果集给你吧
不过他报的错误是少参数,你最后一个参数也随便加个空字符串试试呗
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询