Caused by: java.sql.SQLException: 索引中丢失 IN 或 OUT 参数:: 1

本文记录了一次使用Hibernate框架时遇到的问题:将Long类型常量改为Integer类型后导致get方法报错,错误信息提示参数个数不匹配。最终发现原因是Hibernate要求参数类型与对象属性类型一致。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天遇到一个奇怪的异常,是这样的,之前我定义了一个Long类型的常量,并把它作为以下方法的参数

getHibernateTemplate().get(clazz, id);

可以正常返回指定类的记录对象。后来,为了业务需要,把这个Long类型的常量改为了Integer类型,结果运行的时候上面的方法报错,错误如下:

Caused by: java.sql.SQLException: 索引中丢失  IN 或 OUT 参数:: 1

按异常信息的意思,就是传入SQL的参数个数和SQL需要的参数个数不一致了。我就奇怪了,一共就1个参数,怎么会报这个错误,如是把这个常量改为int类型,还是报同样的错误,最后恢复为当初的Long类型,应用才恢复正常,不再报错。

这里需要说明,要查找的对象里面id属性也为Long类型,可能因为这点,所以Hibernate框架就要求传入的参数也必须是这个类型了,这点可以理解。但因为这块的不一致而报的错误信息,确很不能让人理解了,甚至误导别人的解决思路。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9399028/viewspace-730859/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/9399028/viewspace-730859/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值