J'utilise Hibernate JPA dans mon backend. J'écris un test unitaire en utilisant JUnit et DBUnit pour insérer un ensemble de données dans une base de données HSQL en mémoire.Mise en données BigDecimal dans la base de données de test HSQLDB en utilisant DbUnit
Mon jeu de données contient:
<order_line order_line_id="1" quantity="2" discount_price="0.3"/>
Quelles cartes à un objet Java OrderLine où est défini la colonne discount_price comme:
@Column(name = "discount_price", precision = 12, scale = 2)
private BigDecimal discountPrice;
Cependant, quand je lance mon cas de test et d'affirmer que la remise le prix retourné est égal à 0,3, l'assertion échoue et dit que la valeur stockée est 0. Si je change le discount_price dans l'ensemble de données à 0,9, il arrondit à 1.
J'ai vérifié pour m'assurer que HSQLDB ne fait pas l'arrondi et ce n'est certainement pas parce que je peux insérer un objet de ligne de commande en utilisant du code Java avec une valeur comme 5.3 et ça fonctionne bien.
Pour moi, il semble que DBUtils arrondisse pour une raison quelconque le nombre que j'ai défini. Y a-t-il un moyen de forcer cela à ne pas arriver? Quelqu'un peut-il expliquer pourquoi il pourrait le faire?
Merci!
Ceci est la meilleure réponse, cela fonctionne pour moi. –