gpt4 book ai didi

java - 从 hibernate 查询中获取 java.util.map 列表形式的结果

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

final List <Map<String , Object>>  roleList;
final Map<Integer, String> roleMap=new HashMap<Integer, String>();

roleList = getSession()
.createQuery("select Id, Name from Emp where dept=:ref")
.setParameter("ref", "accounts")
.list();

for (Map<String, Object> map2 : roleList)
{
roleMap.put((Integer)(map2.get("Id")), (String)map2.get("Name"));
}

MappingBean.setRoleList(roleMap);

上面的代码显示了类转换异常[Ljava.lang.Object;无法转换为 java.util.Map。在Hibernate中有什么方法可以获取Maps列表形式的数据吗?我的roleList是 map 的形式,我想设置roleList

最佳答案

当你做出这样的选择时:

.createQuery("select Id, Name from Emp where dept=:ref")

Hibernate 默认返回 List<Object[]> ,因为这是表示给定字段子集的最安全方法,这些字段绝不一定具有相同的类型(因此,最低公共(public)类被视为 Object )。

但是,根据情况,您可以通过简单的迭代或使用配置将结果转换为 map 。在我看来,这似乎是徒劳的练习,因为每条记录都将在 key - Value 中返回。已经流行的方式(即使它表示为两个对象的数组)。

直接这样做可以避免这样的开销(更改 roleList 的类型):

for (Object[] role : roleList) 
{
roleMap.put((Integer)role[0]), (String)role[1]);
}

Object[] Hibernate 返回的值尊重所选字段的顺序,因此,在您的情况下,索引 0对应Id1Name .

关于java - 从 hibernate 查询中获取 java.util.map 列表形式的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19382955/

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