Hibernate反向工程出现BigDecimal类型解决办法

写在开头:

——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”

Hibernate反向工程出现BigDecimal类型解决办法

2、仅在这里添加一条自定义类型映射,把数据库的NUMBER类型映射为Java的Integer类型

点击右方“Add”,修改对应值

!!!是NUMERIC,不是NUMBER!!!

!!!是integer,不是Integer!!!

!!!Scale设置为0!!!

Hibernate反向工程出现BigDecimal类型解决办法

3、生成的实体类就不会出现BigDecimal、Byte、Short类型了


注:为什么要设置“Scale”为“0”?

我们知道,在Oracle数据库中,NUMBER不仅可以表示整数,还可以表示小数(eg:NUMBER(8,2)表示范围是8位,精度为2,即存6位整数,2位小数),如果没有设置“Scale”为“0”,所有NUMBER类型字段(包括表示浮点数的字段)全部变成了Integer类型,这样显然是不对的,因此,“Scale”设置为“0”



本章终。



如果您发现错误,请及时提醒我更正,谢谢。