最近遇到两次在hql的in中传递参数的問题最初让我纠结万千。
在dao层已经封装好了一个使用hql获取数据的方法:
通常在业务层只需要写相应的hql然后把对应参数封装到map中,即可查询出自己需要的数据
然后我有这样一句查询语句:
也就是说hibernate把ids这个参数当做一个Integer对象了而不是一个集合。
后来在网上找了下答案原來对hibernate中setParameter这个方法还不熟悉:Query接口提供了多种传递参数的方法,可以是传单独参数也可以传集合,如下图
也就是说前面使用数组集合的话則必须调用setParameterList方法。
那么改一下Dao层的setParameter方法即可达到通用了:
最初还以为是hibernate不够智能化原来是自己没学好,项目经验相当重要呀...