Ich verwende die javax.persistence-API und Hibernate, um Annotationen und persistente Entitäten und ihre Attribute in einer Oracle 11g Express-Datenbank zu erstellen.BigDecimal-Genauigkeit nicht beibehalten mit JPA-Annotationen
Ich habe das folgende Attribut in einer Einheit:
@Column(precision = 12, scale = 9)
private BigDecimal weightedScore;
Das Ziel ist es, ein Dezimalwert mit maximal 12 Ziffern und maximal 9 dieser Ziffern rechts von der Dezimalstelle zu beharren.
Nach der Berechnung weightedScore
ist das Ergebnis 0.1234, aber sobald ich die Entität mit der Oracle-Datenbank festlege, wird der Wert als 0.12 angezeigt.
Ich kann dies sehen, indem Sie entweder ein EntityManager-Objekt verwenden, um den Eintrag abzufragen, oder indem Sie es direkt in der Oracle Application Express (Apex) -Schnittstelle in einem Webbrowser anzeigen.
Wie sollte ich mein BigDecimal-Attribut annotieren, damit die Genauigkeit korrekt beibehalten wird?
Hinweis: Wir verwenden eine In-Memory-HSQL-Datenbank, um unsere Komponententests auszuführen, und es tritt das Problem nicht mit der fehlenden Genauigkeit auf, mit oder ohne die @Column
Annotation.
Update:
bei der Beschreibung Tabelle der Suche, die Definition der weightedScore
Spalte ist NUMBER(19, 2)
. Ich habe jetzt auch versucht, die Anmerkung zu @Column(columnDefinition="Number(12, 9)")
zu ändern, aber das hat keine Wirkung gehabt. Weiß jemand, warum Oracle auf diese Anmerkungen nicht reagiert?
Der Fehlerbericht sagt auch, dass der Fehler nur für Werte größer als 9,223,372,036,854,775,808 gilt und dass _fixed_. – Ben