Hibernate Unchecked assignement

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)