setParameterList()不返回完整的结果集 [英] setParameterList() does not return full result set
问题描述
IN
子句而不是在hql中使用循环。 01) setParameterList()
中的问题
要使用
setParameterList()
,我们必须传递list对象
列表< Department> listDeptmntId = reportService.listDepartmentID(companyId); //对象列表
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
list中的第一个对象) resultset,不会返回其他结果。
我尝试使用以下方法传递整数列表,如 [1,2,3] 也不起作用。
列表与LT;整数> 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);
我的代码可能是错误的,因为我正在浏览电子书并引用材料来完成项目。先谢谢你。
我通常做 IN(?, ...,?)
使用 java.sql.Array
。
long [] deptIds = listDeptmntId.toArray(new long [listDeptmntId.size()];
java.sql.Array array = conn.createArrayOf(LONG,deptIds);
query.setPameter(depts,array );
I want to make my small spring project effectively. So I use IN
clause instead of using loops in hql.
01) Question in setParameterList()
To use
setParameterList()
, we have to pass list object
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);
The query works fine. But this return only one (first object in listDeptmntId
list) resultset, does not return other results.
I tries to pass integer list like [1,2,3] using following method also not working.
List<Integer> dptIds=listDeptmntId.stream().map((Department::getDepartmentId()).collect(Collectors.toList());
02) Question in setParameter()
int cId=10;
String hql="...... companyId=:id"
Query query = sessionFactory.getCurrentSession().createQuery(hql);
query.setParameter("id",cId);
Sometime when I use parameter passing ("=:") , it does not work for Integers . But directly setting variable to query like following is working
int cId=10;
String hql="...... companyId="+cId
Query query = sessionFactory.getCurrentSession().createQuery(hql);
My code may be wrong because I'm going through ebooks and referring materials to do the project. Thank you in advance.
I generally do IN(?, ..., ?)
using an java.sql.Array
.
long[] deptIds = listDeptmntId.toArray(new long[listDeptmntId.size()];
java.sql.Array array = conn.createArrayOf("LONG", deptIds);
query.setPameter("depts", array);
这篇关于setParameterList()不返回完整的结果集的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!