Я использую, в спящем режиме JPA в моем бэкенде. Я пишу модульный тест с помощью JUnit и DBUnit для вставки ряда данных в базу данных HSQL в оперативной памяти.
Мой набор данных содержит:
<order_line order_line_id="1" quantity="2" discount_price="0.3"/>
Который отображается на объект OrderLine Java, где discount_price столбец определяется как:
@Column(name = "discount_price", precision = 12, scale = 2)
private BigDecimal discountPrice;
Однако, когда я выполняю свой тестовый сценарий и утверждаю, что возвращенная сниженная цена равняется 0.3, утверждение приводит к сбою и говорит, что хранимая сумма 0. Если я изменяю discount_price в наборе данных, чтобы быть 0.9, он окружает к 1.
Я проверил, чтобы удостовериться, что HSQLDB не делает округления, и это определенно не, потому что я могу ввести объект линии порядка с помощью кода Java со значением как 5,3, и это хорошо работает.
Мне кажется, что DBUtils по некоторым причинам округляет число, которое я определил. Существует ли способ, которым я могу вынудить это не произойти? Кто-либо может объяснить, почему это могло бы делать это?
Спасибо!
Я провел быстрый тест на своей стороне с DbUnit 2.2.2, HSQLDB 1.8.0.10 и Hibernate EM 3.4.0.GA, и все работает, как ожидалось:
Discount_price
типа numeric (12,2)
Discount_price
в BigDecimal DiscountPrice
assertEquals (0.3d, orderLine.getDiscountPrice (). DoubleValue ())
передает Итак, у меня следующие вопросы: