Я использую Hibernate JPA в своем бэкэнде. Я пишу модульный тест с использованием JUnit и DBUnit для вставки набора данных в базу данных HSQL в памяти.
Мой набор данных содержит:
<order_line order_line_id="1" quantity="2" discount_price="0.3"/>
Что отображается в Java-объект OrderLine, где столбец 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 по какой-то причине округляет число, которое я определил. Есть ли способ, которым я могу заставить это не произойти? Кто-нибудь может объяснить, почему он это делает?
Спасибо!