Precisão BigDecimal não persistente com anotações JPA
Estou usando a API javax.persistence e o Hibernate para criar anotações e persistir entidades e seus atributos em um banco de dados Oracle 11g Express.
Eu tenho o seguinte atributo em uma entidade:
@Column(precision = 12, scale = 9)
private BigDecimal weightedScore;
O objetivo é manter um valor decimal com um máximo de 12 dígitos e um máximo de 9 desses dígitos à direita da casa decimal.
Depois de calcularweightedScore
, o resultado é 0.1234, mas depois de confirmar a entidade com o banco de dados Oracle, o valor é exibido como 0.12.
Posso ver isso usando um objeto EntityManager para consultar a entrada ou visualizando-a diretamente na interface do Oracle Application Express (Apex) em um navegador da web.
Como devo anotar meu atributo BigDecimal para que a precisão seja mantida corretamente?
Nota: Usamos um banco de dados HSQL na memória para executar nossos testes de unidade, e ele não enfrenta o problema com a falta de precisão, com ou sem o@Column
anotação.
Atualizar:
Olhando para a descrição da tabela, a definição doweightedScore
coluna éNUMBER(19, 2)
. Eu também já tentei mudar a anotação para@Column(columnDefinition="Number(12, 9)")
, mas isso não teve efeito. Alguém sabe por que a Oracle não responde a essas anotações?