MyEclipse8.5中使用hibernate反向生成JavaBean的数据类型

使用MyEclipse8.5,反向生成JavaBean的时候,发现Bean中出现BigDecimal数据类型,而在进行持久化的时候,该数据类型会与插入的数据类型相冲突,应... 使用MyEclipse8.5,反向生成JavaBean的时候,发现Bean中出现BigDecimal数据类型,而在进行持久化的时候,该数据类型会与插入的数据类型相冲突,应该怎样解决?怎样可以把所生成的bean中的数据类型改为long?或者怎样适应bigdecimal类型,使之不发生冲突? 展开
 我来答
匿名用户
2013-06-12
展开全部
解决方案:
1> 你应该用的Oracle吧,不要用例面的number作为主键,数据库中使用long或者int.这样反响工程的到的主键就是Long或者Intger类型的了。
2>如果非用不可也有两种方案供选择:
① 每次都要将数据转换成Bigdecimal然后插入到数据库中,具体可以通过 Bigdecimal的构造方法,例如你的主键是bg,那么添加520到主键就是:
bg=new BigDecimal(520);这种麻烦死了。
②修改映射类型要比上面的好一些。将bean中的BigDecimal为int或long(当然也可以是他们的封装对象Integer 和Long了,因为Integer和Long继承自number,所以子类对象传给父类引用时没问题的)。然后再修改配置文件,将主键映射的类型修改过来( 将<id name="id" type="java.math.BigDecimal">改为<id name="id" type="java.lang.Integer")。这种比上面的省事很多。

现在给你一点建议:
不要用number做主键,那个实在是拿大炮打蚊子。Oracle设计number是用来做数学相关的,hibernate把他映射成BigDecimal,因为BigDecimal继承了java.lang.number并且实现了Serializable, Comparable<BigDecimal> 两个接口。里面封装了很多很多数学方法(你可以看看api文档具体有哪些,以后也许会用到)。这样做是为了方便程序开发,因为有的字段使用number会非常方便,比如你做个数学应用软件或是工程学相关的,里面的数值大部分都会用number。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式