Bonjour, j’ai eu erreur que je comprend vraiment pas.
Lorsque j’appelle la méthode getHibernateTemplate().findByNamedParam
J’ai une erreur :
Unchecked assignement : ‘java.util.List’ to ‘java.util.List<datamodel.Releve>’
Je pense que c’est pour ca que le releve est a null, dans la BD le releve est bien present suivant les parametres que je passe
String parameters[] = {"idPersonne", "idAnnee", "idMois"};
Object values[] = {idPersonne, annee, mois};
List r = getHibernateTemplate().findByNamedParam(query, parameters, values);
J’esper que quelqu’un pourra m’aider
Merci
Ton erreur doit se trouver là :
List r = getHibernateTemplate().findByNamedParam(query, parameters, values);
Le type à gauche ® est List
Le type à droite (getH…()) est manifestement List, ou List
Les deux ne sont pas pareil, il te faut donc 1) soit faire un cast* 2) utiliser List à gauche 3) soit vérifier si Hibernate ne te fournis pas une méthode te retournant la liste sous forme de List.
List<Releve> r = (List<Releve>)getHibernateTemplate().findByNamedParam(query, parameters, values);
Euh jsuis pas certain. Le fait de ne pas downcaster List<?> en List provoque un warning du type “uncheck cast conversion”.
Il faudrait d’abord s’assurer que dans la variable query, il est bien question de Releve. Pour s’en assurer, tu peux prendre le premier objet de la liste (en assumant qu’il y en ait au moins un dans ton test) :
List<?> actual = getHibernateTemplate().findByNamedParam(query, parameters, values);
System.out.println(actual.get(0).getClass().getName());
Parce que si je me trompe pas java.util.List <=> java.util.List, et non pas java.util.List<?>.
Et sinon, en Java, c’est pas sorcier, tu as un tas de truc déjà fait :
java.sun.com…
Je te laisse imaginer la forme du truc : Collections.checkedList(…, Libelle.class)
Hein ? T’es sur de ca ?
Parce que pour moi List == List<?> == List<? extends Object>
Et pas List == List
List list1 = new ArrayList<String>(); // compile et s'exécute
List<?> list2 = new ArrayList<String>(); // compile et s'exécute
List<? extends Object> list3 = new ArrayList<String>(); // compile et s'exécute
List<Object> list4 = new ArrayList<String>(); // ne compile pas
On va faire plus simple : tester. (pas maintenant en revanche)