mysq 的decimal类型与hibernate 的 setResultTransformer



 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这些类型转换问题太烦!!严重影响业务开发

猜你喜欢

转载自cainiao1923.iteye.com/blog/2356457