java.math.BigInteger ne peut pas être converti en java.lang.Integer
Je suis l'exception suivante.
Causés par:
java.lang.ClassCastException: java.les mathématiques.BigInteger ne peut pas être lancé à
java.lang.Entier
avec le code suivant
List queryResult = query.list();
for (Iterator<Object[]> it = queryResult.iterator(); it.hasNext();) {
Object[] result = it.next();
Integer childId = (Integer) result[0];
Integer grandChildCount = (Integer) result[1];
CompanyNode childNode = childNodes.get(childId);
childNode.setHasChildren(grandChildCount != 0);
childNode.setIsLeaf(grandChildCount == 0);
}
à cette ligne
Integer grandChildCount = (Integer) result[1];
Quelqu'un a une idée?
source d'informationauteur Code Junkie
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser:
Ou peut-être jeté à l'
Number
pour couvrir à la foisInteger
etBigInteger
valeurs.Comme nous le voyons dans la javaDoc,
BigInteger
n'est pas une sous-classe deInteger
:Et c'est la raison pour laquelle la conversion de
BigInteger
àInteger
est impossible.Casting de java primitives vont faire de la conversion (comme la coulée de
double
àint
) lors de la coulée de types ne transformera jamais les classes.java.lang.Integer
n'est pas une super classe deBigInteger
. Les deuxBigInteger
etInteger
faire hériter dejava.lang.Number
de sorte que vous pourriez lancer unjava.lang.Number
.Voir la java docs http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Number.html
La colonne dans la base de données est probablement un
DECIMAL
. Vous devez la traiter comme uneBigInteger
pas unInteger
sinon vous perdez des chiffres. Ou d'autre changement de la colonne deint
.Vous pouvez essayer ceci:
- Je utiliser
java.math.BigDecimal
convertirint
(type primitif).Il est travaillé pour moi.