2013-01-11 131 views
3

postgres列類型將映射到基於hibernate的列中的Java Float類型?什麼Postgres類型將映射到類型Float的休眠列?

我有我的遺留postgres數據庫中浮動(19),但如果啓用hibernate模式驗證我得到這個錯誤信息。

Wrong column type in realtorprint.templatetype for column height. 
Found: float8, expected: float4 

任何想法?我的專欄是浮動(8),而不是浮動(19)我可能會在我們的舊數據庫中改變這一點。

+0

我希望你知道使用浮點數是一個壞主意(在Java和Postgres中)。由於它們代表的方式,你不一定會回到你放入的內容。使用'BigDecimal'(Java)或'decimal'(在Postgres中)是一個更好的選擇。 http://floating-point-gui.de/ –

+0

@a_horse_with_no_name不是一個普遍不好的主意;它們非常適合存儲測量值和其他數量的值,其中精確表示不如效率重要,並且能夠將值存儲在大範圍的值中。不過,將它們用於貨幣是一個糟糕的主意。 –

+0

我使用了一個浮點數,因爲此寬度/高度列映射到PDF寬度/高度單位,這基本上是一個浮點數。 – benstpierre

回答

3

hibernate如何將Java類型映射到SQL類型由對應於您的RDBMS的Dialect的子類控制。準確地說,你使用哪一個可能取決於你的Hibernate和Postgres版本。

但我懷疑在大多數情況下,Java浮動地圖浮動(4)和Java雙映射浮動(8)。

這是開源的,你可以得到代碼,並檢查確定你的情況發生了什麼。

您還可以通過配置替換自己的方言,儘管它很少適合。 (它適用於偶爾的錯誤修正。)

相關問題