BigDecimal неправильно сохранен в БД с использованием JPA - PullRequest
4 голосов
/ 20 октября 2011

Я использую JPA с Hibernate и Oracle DB (Oracle 11.2 XE).Я пытаюсь сохранить большое число, но то, что сохраняется в БД, - это не то большое число, которое я ввел.

У меня есть столбец, в котором я хочу сохранить большое десятичное число, сопоставленное так:

@Column(name = "INVOICE_AMOUNT", precision = 25, scale = 2, nullable = false)
private BigDecimal amount;

В БД столбец был создан так:

INVOICE_AMOUNT NUMBER(25,2) DEFAULT 0 NOT NULL,

Проблема в том, что я пытаюсь сохранить номер "19999979998000000".Непосредственно перед тем, как сделать персистирование, я отладил поле и оно говорит:

amount = {java.math.BigDecimal@13204}"1.9999979998E+16"

Но в БД хранится значение 20 ...

Версии:

jpa 1.0
hibernate-3.2.6.ga.jar
jboss-4.2.3.GA

Что я делаю не так?

1 Ответ

2 голосов
/ 20 октября 2011

Обновление до ojdbc14 версии 10.2.0.5 решает проблему (я думаю, что это исправлено в 10.2.0.4)

...