我有hibernate代碼,它將Bigdecimal數字插入FLOAT類型的Db列。它一般工作。但是,當我嘗試插入值0.00000000009080767 並再次獲取對象時,我看到返回的值不同。休眠保存大紀錄
但是,當我嘗試直接使用SQL查詢插入值,然後使用hibernate load方法獲取值時,我發現getAmount方法的SOP正確輸出值。
代碼:
Contact contact1 = new Contact("sailesh1117777", "[email protected]", "Vietnam1", "0904277091",new BigDecimal("0.00000000009080767"));
session.persist(contact1);
session.getTransaction().commit();
session.flush();
session.close();
session = sessionFactory.openSession();
Contact contact5 = (Contact) session.load(Contact.class, new Integer(1));
System.out.println(((BigDecimal)contact5.getAmount()).toPlainString());
<class name="Contact" table="CONTACT">
<id name="id" column="CONTACT_ID">
<generator class="increment"/>
</id>
<property name="name" type="string" column="NAME"/>
<property name="email"/>
<property name="address"/>
<property name="telephone"/>
<property name="amount" type="big_decimal"/>
</class>
OUTPUT: 0.00000000008978076
請修改您的問題以添加信息,而不是使用評論。 –
如何將值存儲在數據庫中? –
如果列的類型確實是FLOAT,那麼這並不意外。浮點類型的精度有一個限制,float是精度最低的那個。可能還有其他數據類型,如NUMBER,它允許您指定最大精度,但仍然有一個限制,17個小數位已經相當高IMO。 – Thomas