(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...)
Hibernate POJO 慎用 Java原生态类型
原文:http://toknowme.iteye.com/blog/2235657