hibernate 映射异常

本文介绍了一种在Hibernate中将数据库tinyint字段映射为Java Boolean类型时出现的异常问题及解决方案。通过调整配置文件中的字段类型,可以有效避免因字段类型不匹配导致的异常。

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

mysql数据库表中的一个字段是tinyint的,映射后成为byte型,手工改成boolean型后所有跟这个表相关的操作全都抛出异常

严重: Servlet.service() for servlet action threw exception
org.hibernate.PropertyAccessException: exception setting property value with CGLIB (set hibernate.cglib.use_reflection_optimizer=false for more info) setter of com.domain.Term.setOnline
	at org.hibernate.tuple.PojoEntityTuplizer.setPropertyValuesWithOptimizer(PojoEntityTuplizer.java:215)
	at org.hibernate.tuple.PojoEntityTuplizer.setPropertyValues(PojoEntityTuplizer.java:185)
	at org.hibernate.persister.entity.AbstractEntityPersister.setPropertyValues(AbstractEntityPersister.java:3232)
	at org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:129)
	at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:842)
	at org.hibernate.loader.Loader.doQuery(Loader.java:717)
.................

 

显然是属性映射的问题,分析后查找资料,发现

 

出错或异常原因:
1.    数据库表中的字段(一般都是数值型的字段)的类型与配置文件中所配置的类型不一致。
2.    在数据库中,数值型字段的值为空null。
相应的解决:
1.    将该字段在配置文件中的类型修改成一致的类型都为Integer。
2.    因为null不能赋值给原始类型,所以在配置数据库中数值型的字段类型(long、int、tinyint)都映射成对象类型Integer问题就解决了。

 

数据库中已有数据,打开数据库,发现这列为null,改为1,运行,异常解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值