mysq 的decimal类型与hibernate 的 setResultTransformer

本文讨论了在使用Hibernate框架进行数据库操作时遇到的类型转换问题,特别是针对从MySQL的decimal类型映射到Java实体类的问题。当使用不同的查询方法时,如setResultTransformer,可能需要将字段类型从double更改为BigDecimal来避免类型转换错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



 mysql数据库里是decimal类型的话(powerdesigner是numeric(12,2))

 

java实体类用工具自动生成,相应类型为double,这个在用hqlQuery查询实体的时候,或者在用sqlQuery.addEntity(select * from方式,必须是查询hibernate实体类)方法时候没什么问题,可以顺利生成实体类。

但是,如果用,setResultTransformer时候,这个时候是生成VO非hibernate实体类,相当于自己组装类,这个时候,在setContractAmt时候,会报什么setter不了,expectedtype=dobule,应该是查出来的类型不能转型为dobule,这个时候需要把字段类型改为BigDecimal即可。

//	private double contractAmt;
	private BigDecimal contractAmt;

 

---还有,addEntity方法只适合于SQLQuery,这个时候sql也是select * 这种方式,并且必须是hibernate实体类,这个时候会自动将column到property转换。而setResultTransformer相当于组装任意VO,必须写别名(用as的方式,看另我的一篇博客),可以是sql或者hql,组装成一个VO。

 

玛德,hibernate这些类型转换问题太烦!!严重影响业务开发

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值