setParameterList()不返回完整的结果集 [英] setParameterList() does not return full result set

查看:479
本文介绍了setParameterList()不返回完整的结果集的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想要有效地制作我的小型弹簧工程。所以我使用 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆