2016-07-21 30 views
0

Ich möchte eine Summe von doppelten Werten als Dezimal (4,2) in meiner Datenbank beibehalten und es dem Benutzer anzeigen. Das Problem, das ich habe, ist, dass die Dezimalzahl in meiner Datenbank mit zwei Dezimalziffern korrekt gespeichert wird. Wenn es jedoch in einigen Fällen von der Datenbank abgefragt wird, zeigt es dem Benutzer viel mehr Dezimalziffern an. In meinem Entity-Klasse I haben:JPA/MySQL Dezimal falsch angezeigt

@Column(name="weight_sum", precision=6, scale=2) 
    private double weightSum; 

In meiner MySQL-Datenbank Ich habe eine Spalte

Decimal (4,2) 

Ich verstehe nicht, wie

angegeben, wo ich den Fehler gemacht.

Antwort

1

Eigentlich machst du richtige Dinge, aber du musst noch mehr Sachen machen. Wenn Sie Präzision und Skalierung für die Gewichtssumme der Entitätsklasse definiert haben, wird sie entsprechend in db gespeichert. Wenn Sie jedoch Daten aus db zurückholen und an die entsprechende Entitätsklasse binden, wird wieder die Standardskalierung (tatsächliche Skalierung, die auf Null folgt) und der Präzisionswert verwendet. Wenn Sie also Daten an den Endbenutzer senden, müssen Sie die Waage wie folgt einstellen:

weightSum.setScale(2, BigDecimal.ROUND_FLOOR);

In der obigen Methode ist der zweite Parameter roundingMode, Sie sollten nach Ihren Anforderungen rundingMode wählen.

Ich hoffe, es wird Ihnen helfen. Danke