Bonjour à tous,
Je fais actuellement un projet java pour ma fac mais je bloque depuis plus d'une semaine sur une erreur.
Pour information, j'ai une classe "Version" et une classe "Article" qui contient une liste de version.
J'aimerais pouvoir récupérer l'id de la version précédent la version courante. Pour cela, je fais ceci:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
public int getVersionBefore(int idVersion) {
Article a = findArticleVersion(idVersion);
Query q = em.createQuery("From Article a Join a.lesversions v Where a.id=:idArticle ");
q.setParameter("idArticle", a.getId());
List<Version> lesversions = new ArrayList<Version>();
lesversions.addAll(q.getResultList());
ListIterator<Version> listit = lesversions.listIterator();
while (listit.hasNext()) {
Version version = (Version) listit.next();
if (version.getIdVersion() == idVersion && listit.hasPrevious()) {
return listit.previous().getIdVersion();
}
}
return idVersion;
} |
J'obtient cette erreur:
javax.ejb.EJBException: java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to encyclo.ejb.Version
Sur cette ligne:
Version version = (Version) listit.next();
Je croyais pourtant que listit.next() renvoyait le prochain élément de listit.
J'ai essayé de faire l'initialisation des listes de plusieurs façons mais je ne trouve pas mon problème.
Si quelqu'un l'a déjà rencontré, je suis preneuse de la solution.
Merci d'avance.
Partager