2017-10-17 3 views
0

Ich bin fest und brauche etwas Hilfe. Der folgende Code funktioniert mit Springframework v2.5.6, aber diesen Fehler erhalten Sie, wenn Sie eine größere Version verwenden.kann nicht aus der Liste <map <string, object >> zu Liste <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; 
} 

Ich verstehe die Gussfehler, aber es ist seltsam, wie es unter dieser Version funktioniert aber nicht Zukunft, und nichts in der Dokumentation finden können, die keine Details gibt.

+0

Für welche Version testen Sie gerade? – dillius

Antwort

0

Es scheint, dass der Rückgabetyp zwischen v2.5.6 und aktuelleren Versionen geändert wurde.

Map<String, object> kann aufgrund von wie covariance and contravariance work in Java nicht auf Map<String, String> umgewandelt werden.

+0

Wie kann ich getJdbcTemplate(). QueryForList zum Abrufen von Zeichenfolge im Vergleich zu Objekt? Ich versuche Code zu reparieren, der mehrere Jahre alt ist und den Frühling zum Standard bringt. – Robert4Korea

+0

Sie können diese Version der Methode ändern, indem Sie Map als Klasse angeben: https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jdbc/ core/JdbcTemplate.html # queryForList-java.lang.String-java.lang.Objekt: A-java.lang.Class- – dillius

0

ich die Lösung gefunden, hatte mit dieser Linie zu ersetzen.

Liste> Rollen = (List) getJdbcTemplate() queryForList (ACL_QUERY, params);

Verwandte Themen