gpt4 book ai didi

java - setParameterList() 不返回完整结果集

转载 作者:行者123 更新时间:2023-12-02 12:16:17 25 4
gpt4 key购买 nike

我想有效地制作我的小型 Spring 项目。所以我在 hql 中使用 IN 子句而不是使用循环。

01) 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);

查询工作正常。但这仅返回一个(listDeptmntId列表中的第一个对象)结果集,不返回其他结果。

我尝试使用以下方法传递像[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);

我的代码可能是错误的,因为我正在阅读电子书并引用 Material 来完成该项目。先感谢您。

最佳答案

我通常使用 java.sql.Array 执行 IN(?, ..., ?)

long[] deptIds = listDeptmntId.toArray(new long[listDeptmntId.size()];
java.sql.Array array = conn.createArrayOf("LONG", deptIds);
query.setPameter("depts", array);

关于java - setParameterList() 不返回完整结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46154813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com