hibernate普通参数与命名参数查询

   一直以为,dao层和顶级service层我都封装好了,在平时代码中根本不用触动,所以对hibernate的一些细节也有点生疏了,今天,突然想增加一个能带命名参数查询的功能,可是,凡调用带命名参数查询的方法时,都报
java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.Integer,

我就纳闷了,难道是我返回的类型与我定义的类型不一样?调了半天,根本没进我赋值这里,干脆只调用不赋值,还是报同样的错误,这就奇了怪了,spring里自带的hibernateTemplate却能命名参数查询,我为什么不能,看了spring的源码,我汗,原来hibernate在设置参数时,参数值不同的类型,设置参数时调用的方法不一样,如果参数值是集合或数组,调用的方法setParameterList,否则调用的是setParameter,哎hibernate在这一点报错上没做的更人性化啊,底层没做太多判断啊,直接就把jdk的异常抛出来。特做个笔记,以后备查。



猜你喜欢

转载自zwllxs.iteye.com/blog/1058509