2010-01-12 6 views
0

J'ai une application Spring exécutée sur une base de données MySql. J'ai une table de vente comme:Spring queryForLong - Perte de précision

+-------------------+------------------------------+------+-----+---------+-------+ 
| Field    | Type       | Null | Key | Default | Extra | 
+-------------------+------------------------------+------+-----+---------+-------+ 
| Price    | decimal(19,4)    | NO |  | NULL |  | 
| ItemId   | int(10) unsigned    | NO |  | NULL |  | 
+-------------------+------------------------------+------+-----+---------+-------+ 

Dans ma classe de printemps, je donne les résultats suivants:

long price = getSimpleJdbcTemplate().queryForLong("SELECT price FROM sales WHERE itemID = :itemID", params); 
logger.info("price: " + price + "); 

Cependant, ce renvoie un prix de 1, même si cette requête directement sur la base retourne 0,8500. Comment éviter cette perte de précision de la décimale dans la base de données à la longue dans mon code?

Répondre

5

long ne prend pas en charge les décimales car il s'agit d'un type entier. Avez-vous essayé queryForObject(sql, BigDecimal.class, params)?

Questions connexes