Hibernate POJO 慎用 Java原生态类型

(1)如果数据库表中存储的数据为NULL
(2)POJO中属性的类型为原生态类型(int,long,double...)
 
那么我们就会抛出如下错误:
java.lang.IllegalArgumentException: Can not set long field com.crm.model.card.BOCrmCardOperate.newCardInsId to null value
 at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Unknown Source)
 at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Unknown Source)
 at sun.reflect.UnsafeLongFieldAccessorImpl.set(Unknown Source)
 at java.lang.reflect.Field.set(Unknown Source)
 at org.hibernate.property.DirectPropertyAccessor$DirectSetter.set(DirectPropertyAccessor.java:139)
 at org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropertyValues(AbstractEntityTuplizer.java:710)
 at org.hibernate.tuple.entity.PojoEntityTuplizer.setPropertyValues(PojoEntityTuplizer.java:371)
 at org.hibernate.persister.entity.AbstractEntityPersister.setPropertyValues(AbstractEntityPersister.java:4499)
 at org.hibernate.engine.internal.TwoPhaseLoad.doInitializeEntity(TwoPhaseLoad.java:185)
 at org.hibernate.engine.internal.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:137)
 at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:1103)
 at org.hibernate.loader.Loader.processResultSet(Loader.java:960)
 at org.hibernate.loader.Loader.doQuery(Loader.java:910)
 
错误分析:
    字段为空值,但是POJO的属性是原生态类型,Hibernate无法将NULL赋值到一个原生态类型
     There's no way for Hibernate to store null into a primitive type field. 
 
这个时候的解决方案:
    (1)将POJO中的属性修改成对象类型(Integer,Long...)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值