`
toknowme
  • 浏览: 137363 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

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...)
1
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics