Hibernate反向工程出現BigDecimal型別解決辦法
阿新 • • 發佈:2019-02-05
寫在開頭:
——IDE:MyEclipse
——資料庫:Oracle
——框架:Hibernate3.3
要做什麼?
指定表字段對映型別,
生成實體類的時候,把Oracle資料庫NUMBER型別對映為Integer型別
(預設對映會根據NUMBER的長度對映為不同的java型別,比如NUMBER(22)-->BigDecimal型別,之後在操作實體類時經常需要強制轉換型別,很麻煩)
NUMBER長度(暫不考慮浮點數)與Java型別對應關係:
NUMBER長度 | Java型別 |
---|---|
1 | Boolean |
2 | Byte |
3-4 |
Short |
5-9 | Integer |
10-18 | Long |
19+ | BigDecimal |
怎麼做?
1、反向工程過程中有一個步驟可以自定義對映型別,就是“Customized Type Mappings”
2、僅在這裡新增一條自定義型別對映,把資料庫的NUMBER型別對映為Java的Integer型別
點選右方“Add”,修改對應值
!!!是NUMERIC,不是NUMBER!!!
!!!是integer,不是Integer!!!
!!!Scale設定為0!!!
3、生成的實體類就不會出現BigDecimal、 Byte、Short型別了
注:為什麼要設定“Scale”為“0”?
我們知道,在Oracle資料庫中,NUMBER不僅可以表示整數,還可以表示小數(eg:NUMBER(8,2)表示範圍是8位,精度為2,即存6位整數,2位小數),如果沒有設定“Scale”為“0”,所有NUMBER型別欄位(包括表示浮點數的欄位)全部變成了Integer型別,這樣顯然是不對的,因此,“Scale”設定為“0”
本章終。
如果您發現錯誤,請及時提醒我更正,謝謝。