gpt4 book ai didi

java - Hibernate:将从查询检索到的所有值存储到ArrayList

转载 作者:行者123 更新时间:2023-12-01 18:05:25 25 4
gpt4 key购买 nike

我的问题是我只得到一行的结果,这也是三次。我想检索库存少于 10 个的所有数据。如何将对象数据添加到数组列表中?

        String lowStock = "SELECT MedcineID, MName, Quantity FROM medcineinventory WHERE Quantity < :stock";
SQLQuery query = session.createSQLQuery(lowStock);

query.setParameter("stock", 10);
List<Object[]> stocks = query.list();
ArrayList<Inventory> allResults = new ArrayList<Inventory>();
Inventory iv = new Inventory();

for(Object[] data : stocks){

iv.setMedcineID((Integer) data[0]);
iv.setMName((String) data[1]);
iv.setQuantity((Integer)data[2]);

allResults.add(iv);

}

tx.commit();
session.close();

return allResults;

最佳答案

您必须在循环内移动您的Inventory iv = new Inventory();:

for(Object[] data : stocks){
Inventory iv = new Inventory();
iv.setMedcineID((Integer) data[0]);
iv.setMName((String) data[1]);
iv.setQuantity((Integer)data[2]);
allResults.add(iv);
}

这是因为每次浏览结果列表时,您都会更改初始 iv 的数据并向结果列表添加新条目。因此,最终您的最终列表中有三个条目,它们具有相同的值,代表检索到的数据的最后一个元素。

在循环内移动 iv 的创建每次都会创建新元素。

关于java - Hibernate:将从查询检索到的所有值存储到ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36836553/

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