ClassCastException: java.lang.L'objet ne peut pas être lancé à java.lang.Entier

La racine de mon problème est que j'ai une méthode qui traite les requêtes JDBC et libère toutes les connexions après la requête. Un "ResultSet" est passé à la méthode appelante.

J'ai constaté que je ne peux pas tout simplement passer le ResultSet retour à l'appel de la méthode, car avec le jeu de résultats fermé, alors que toutes les tentatives pour l'utiliser obtenir un Déjà Fermé à l'erreur.

Donc, avant que je ferme les ressources, je boucle à travers le jeu de résultats et de les stocker dans une liste de tableaux.

Parce que la méthode gère toutes les requêtes, je ne sais pas quel genre de types sont en train de revenir. Par conséquent, la liste de tableaux magasins générique s.

Cela fonctionne sauf pour un champ dans une table .. dans une base de données, qui est un Entier [].

Ce que je sors de là est un JDBC4Array objet, et j'ai un diable de temps à arriver que, pour un Entier[] pour le stockage dans la liste de tableaux. J'ai besoin d'elle pour être un Entier[].

C'est ce que j'ai en ce moment... C'est après beaucoup de frustrés banjaxxing.

Tout en parcourant le jeu de résultats, avant que la connexion est fermée, je fais ceci:

            //For every row in the ResultSet
            while (rs.next()) {
                //Initialize a ITILRow for this ResultSet row
                ITILRow row = new ITILRow();

                //For each column in this row, add that object to the ITILRow
                for (int colNum=1; colNum<=numCols; colNum++) {
                    Object o = rs.getObject(colNum);

                    //JDBC4Array is a real pain in the butt
                    ArrayList<Integer> tmpList = new ArrayList<Integer>();
                    if (o != null) {
                        if (o.getClass().getSimpleName().endsWith("Array")) {
                            //At least at this time, these Arrays are all Integer[]
                            Array a = (Array) o;
                            Integer[] ints = (Integer[]) a.getArray();
                            for (Integer i : ints) {
                                tmpList.add(i);
                            }
                            o = tmpList;
                        }
                    }

                    row.add(o);
                }

                //Add the ITILRow to allRows
                allRows.add(row);
            }

Puis, dans l'appel de la méthode...

    for (ITILRow row : allRows) {
        ...
        ArrayList comps = (ArrayList) row.getObject(5);
        Integer[] argh = (Integer[]) ((ArrayList<Integer>) comps).toArray();

        ...
    }

Et j'obtiens:

java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.Integer;

Aide serait appréciée. J'ai reçu mon cerveau attaché dans un noeud sur celui-ci.

Merci,

OriginalL'auteur Lurk21 | 2013-02-27