Ne peut pas mettre le Double du nombre de BigDecimal variable

Je suis en utilisant une variable de type Double qui détient le prix de l'Article. Cette variable est stockée dans une base de données postgresql sous une colonne de type monétaire. J'utilise setBigDecimal(position,valeur) fonction SQL.En d'autres part, je suis en utilisant un JSpinner comme entrée.

Double current = 0.0;
Double min = (double) Integer.MIN_VALUE;
Double max = (double) Integer.MAX_VALUE;
Double step = 0.1;

JSpinner priceSpinner = new JSpinner(new SpinnerNumberModel(current, min, max, step));

Lorsque l'utilisateur clique sur un bouton, j'obtiens la valeur passé la frontière par l'utilisateur et de le mettre dans la base de données via des requêtes SQL.

 insertStmt.setBigDecimal(position,BigDecimal.valueOf((double) priceSpinner.getValue()));

Mais, j'ai eu cette petite erreur,

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.Double
  • JSpinner.getValue() renvoie un objet que vous essayez de lancer en Double (ce Qui ne semble pas être possible car il est courant de classe BigDecimal) que Vous avez besoin de BigDecimal, essayez setBigDecimal(position,(BigDecimal) priceSpinner.getValue());
  • Pouvez-vous poster le full stack trace la ligne de votre code est réellement la cause de l'exception?
  • Remarque importante: essayez de ne pas instancier BigDecimal objets avec un double paramètre. Toujours passer un argument de type Chaîne. Il y a un bon morceau, mais je ne trouve pas le lien pour la vie de moi.
  • lorsque le priceSpinner n'est pas rempli (la valeur par défaut est de zéro), j'ai eu cette erreur d'Exception dans le thread "AWT-EventQueue-0" java.lang.ClassCastException: java.les mathématiques.BigDecimal ne peut pas être lancé à java.lang.Double
InformationsquelleAutor abdou amer | 2015-01-05