2017-10-17 172 views
0

我被卡住了,需要一些帮助。下面的代码适用于Springframework v2.5.6,但在使用更高版本时会出现该错误。无法从列表<map <string,object >>转换为列表<map <string,string >>

public List<Map<String, String>> getAclUserRoles(String akoId) { 
    List<Map<String, String>> roles = null; 
    if (null == akoId || "".equals(akoId.trim())) { 
     return null; 
    } 
    Object[] params = { akoId }; 
    roles = (List<Map<String, String>>) getJdbcTemplate().queryForList(ACL_QUERY, params); 
    return roles; 
} 

我明白演员的错误,但它是如何工作该版本下而不是未来,而无法找到给出任何细节的文档中的任何真奇怪。

+0

您目前正在测试哪个版本? – dillius

回答

0

似乎返回类型在v2.5.6和更多当前版本之间更改。

Map<String, object>由于如何covariance and contravariance work in Java不能投到Map<String, String>

+0

如何设置getJdbcTemplate()。queryForList检索字符串与对象?我正在尝试修复几年前的代码,并使Spring达到标准。 – Robert4Korea

+0

您可以将其更改为使用此版本的方法,并将Map 指定为您的类:https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jdbc/核心/ JdbcTemplate.html#的queryForList-java.lang.String中-java.lang.Object中:A-java.lang.Class- – dillius

0

我找到了解决办法,曾与这条线来替换:

列表>角色=(列表)getJdbcTemplate()的queryForList(ACL_QUERY,则params);

相关问题