我正在使用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

println输出

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

调试器输出

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

最佳答案

如果每次o[0]始终相同,则由于Map定义每个键都有一个值,因此您将继续覆盖以前的值。您应该使用列表(包含同时包含两个值的一些自定义对象),或者使用Google馆藏库中的Multimap之类的东西,它允许您多次put相同的键,并且get返回以下内容的集合价值观。

10-02 11:42