1

我正在使用 Hibernate JPA 运行本机查询并返回结果列表。

我想要获取并添加到地图中以供将来处理的结果列表,但是返回的地图仅包含 ResultList 中的最后一项。

如何让结果列表在地图中添加多个条目?

Map<String,String> results = new HashMap<>();

Query query = em.createNativeQuery(select);
List<Object[]> resultSet = query.getResultList();

for(Object[] o : resultSet){
    System.out.println(o[0] + "\t"+ o[1]); //this prints out the columns correctly
    results.put((String)o[0],(String)o[1]); //but this only ever holds the last displayed column
}

- 编辑 -

预期地图内容:

940 7107877
940 7107664
940 7112778
940 7112479
940 7114678
940 7113504

打印输出

940 7107877
940 7107664
940 7112778
940 7112479
940 7114678
940 7113504

调试器输出

从下图中您可以看到结果大小 = 1、显示对象的结果集样本和 i 计数器(我添加它以说明我正在进行的迭代)

在此处输入图像描述

4

1 回答 1

5

如果o[0]每次总是相同,那么您将继续覆盖以前的值,因为 Map 根据定义,每个键都有一个值。您应该使用 List(包含一些包含两个值的自定义对象)或使用Google Collections 库中的Multimap之类的东西,它允许您put多次使用相同的键,并get返回值的集合。

于 2013-06-06T18:45:35.753 回答