バックエンドで Hibernate JPA を使用しています。JUnit と DBUnit を使用して単体テストを作成し、インメモリ HSQL データベースに一連のデータを挿入しています。
私のデータセットには以下が含まれています:
<order_line order_line_id="1" quantity="2" discount_price="0.3"/>
discount_price 列が次のように定義されている OrderLine Java オブジェクトにマップされます。
@Column(name = "discount_price", precision = 12, scale = 2)
private BigDecimal discountPrice;
ただし、テスト ケースを実行して、返された割引価格が 0.3 に等しいとアサートすると、アサーションは失敗し、保存された値が 0 であると表示されます。データセットの discount_price を 0.9 に変更すると、1 に切り上げられます。
HSQLDB が丸め処理を行っていないことを確認しましたが、5.3 のような値を持つ Java コードを使用して注文明細オブジェクトを挿入でき、正常に動作するため、間違いなくそうではありません。
私には、DBUtils が何らかの理由で私が定義した数値を四捨五入しているように思えます。これが起こらないようにする方法はありますか?なぜこれを行っているのか、誰か説明できますか?
ありがとう!