写在开头:
——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”
本章终。
如果您发现错误,请及时提醒我更正,谢谢。