java - 类型不匹配 : cannot convert from List<Map<String, Object>> 到 List<Object>

标签 java spring jdbctemplate

我们有

 String sql = "SELECT * FROM user WHERE id = '" +userId +"'";
 List<Object> userList = template.queryForList(sql);

查询应返回具有给定 ID 的不同用户。 templateJdbcTemplate 的对象类。
此处查询返回 Map<String,Object> 的列表左边是List<Object> .有没有办法进行转换。这是 spring 事务管理示例的一部分。

最佳答案

您始终只能使用 values您首先感兴趣的是:

List<Object> userList = new ArrayList<Object>(template.queryForList(sql).values());

如果它返回 List<Map<String, Object>>而不是 Map<String,Object> :

List < Object > userList = new ArrayList < Object > ();
for (Map < String, Object > obj: template.queryForList(sql)) {
    userList.addAll(obj.values());
}

这应该给你一个 Object 的列表如你所愿。如果你需要探索为什么Map.values()不能直接转换为列表,我们需要创建一个新的 ArrayList为此目的可以在这里找到:why HashMap Values are not cast in List

关于java - 类型不匹配 : cannot convert from List<Map<String, Object>> 到 List<Object>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34597060/

相关文章:

java - 无法在使用 Spring 开发的 Rest API 中接收 Double 数据类型

java - 为什么插入语句的时间成本范围如此之大?

java - 上传图片到android服务器

java - 如何将分隔符设置为 "\\p{Punct}"不包括引号?

java - cometd jar 和 jetty jar 之间有兼容性表吗?

java - 使用 JDBC 模板并非所有变量绑定(bind)异常

java - 通过 jdbcTemplate.update(List) 更新 JdbcTemplate

java - Guava Multimap 到 HashMap

java - 如何在 Spring 中加载资源并将其内容用作字符串

java - 如何使用 MockMvc 为 POST 提供请求参数