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”


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”



本章终。



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

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值