Die BigDecimal-Genauigkeit wurde bei JPA-Anmerkungen nicht beibehalten
Ich verwende die API "javax.persistence" und "Hibernate", um Anmerkungen zu erstellen und Entitäten und ihre Attribute in einer Oracle 11g Express-Datenbank beizubehalten.
Ich habe das folgende Attribut in einer Entität:
@Column(precision = 12, scale = 9)
private BigDecimal weightedScore;
Ziel ist es, einen Dezimalwert mit maximal 12 Stellen und maximal 9 dieser Stellen rechts von der Dezimalstelle beizubehalten.
Nach der BerechnungweightedScore
, das Ergebnis ist 0.1234, aber sobald ich die Entität mit der Oracle-Datenbank festschreibe, wird der Wert als 0.12 angezeigt.
Ich kann dies sehen, indem ich entweder ein EntityManager-Objekt zum Abfragen des Eintrags verwende oder es direkt in der Oracle Application Express (Apex) -Schnittstelle in einem Webbrowser ansehe.
Wie soll ich mein BigDecimal-Attribut mit Anmerkungen versehen, damit die Genauigkeit korrekt beibehalten wird?
Hinweis: Wir verwenden eine speicherinterne HSQL-Datenbank, um unsere Komponententests durchzuführen. Das Problem tritt weder mit noch ohne die auf@Column
Anmerkung.
Aktualisieren:
Betrachtet man die Tabellenbeschreibung, so ergibt sich die Definition derweightedScore
Spalte istNUMBER(19, 2)
. Ich habe jetzt auch versucht die Annotation zu ändern@Column(columnDefinition="Number(12, 9)")
, aber das hat keine Wirkung gehabt. Weiß jemand, warum Oracle auf diese Anmerkungen nicht reagiert?