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:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
javax.ejb.EJBException: java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to encyclo.ejb.Version
Sur cette ligne:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.