我想使我的小型弹簧项目有效。所以我使用IN
子句而不是在hql中使用循环。setParameterList()不返回完整结果集
01)在setParameterList()
问题使用
setParameterList()
,我们必须通过列表对象
List<Department> listDeptmntId = reportService.listDepartmentID(companyId); //list of objects
String hql = "select s.department.departmentName, g.dateTime from Gauge g inner join g.survey s where s.department in (:dpts)";
Query query = sessionFactory.getCurrentSession().createQuery(hql);
query.setParameterList("dpts",listDeptmntId);
查询工作正常。但是这个返回只有一个(第一个对象在listDeptmntId
列表中) resultset,不会返回其他结果。
我试图通过整数列表像[1,2,3]使用以下方法也不起作用。
List<Integer> dptIds=listDeptmntId.stream().map((Department::getDepartmentId()).collect(Collectors.toList());
02)在setParameter()
int cId=10;
String hql="...... companyId=:id"
Query query = sessionFactory.getCurrentSession().createQuery(hql);
query.setParameter("id",cId);
问题有时当我使用的参数传递( “=:”),它不为整数工作。不过,直接设置变量来查询像以下工作
int cId=10;
String hql="...... companyId="+cId
Query query = sessionFactory.getCurrentSession().createQuery(hql);
我的代码可能是错误的,因为我要通过电子书和参考材料做项目。先谢谢你。
你是什么意思*有时当我使用参数传递(“=:”)时,它不适用于整数* ? –
,因为它不起作用,我无法弄清楚会发生什么 – varman
这个问题需要: 1.分成两个不同的问题 2.整合代码与一个工作的例子(你使用Query.list()或uniqueResult( )还是其他的?),更好地与休眠配置 –