BigDecimal précision pas persisté, avec des annotations JPA

Je suis en utilisant le javax.persistence API Hibernate et à créer des annotations et de persister les entités et leurs attributs dans une base de données Oracle 11g Express de la base de données.

J'ai l'attribut suivant dans une entité:

@Column(precision = 12, scale = 9)
private BigDecimal weightedScore;

L'objectif est de conserver une valeur décimale avec un maximum de 12 chiffres et d'un maximum de 9 de ces chiffres à droite de la virgule.

Après le calcul de weightedScore, le résultat est 0.1234, mais une fois que j'ai commis à l'entité avec la base de données Oracle, la valeur s'affiche comme 0.12.

Je peux voir ce qui en soit à l'aide d'un objet EntityManager à la requête de l'entrée ou en consultant directement dans le Oracle Application Express (Apex) de l'interface dans un navigateur web.

Comment dois-je annoter mon BigDecimal attribut de sorte que la précision est conservé correctement?

Remarque: Nous utilisons une mémoire de base de données HSQL pour exécuter nos tests unitaires, et il ne rencontrez pas le problème avec le manque de précision, avec ou sans le @Column annotation.

Mise à jour:

En regardant la description de la table, la définition de la weightedScore colonne est NUMBER(19, 2). Maintenant j'ai aussi essayé de changer l'annotation à @Column(columnDefinition="Number(12, 9)"), mais cela n'a eu aucun effet. Personne ne sait pourquoi Oracle ne répond pas à ces annotations?

OriginalL'auteur David Kaczynski | 2012-06-08