使用struts+hibernate框架时,出现了以下错误:
org.hibernate.PropertyAccessException: Null value was assigned to a property of primitive type setter of com.xxx.publish.entity.Site.isUse
at org.hibernate.property.BasicPropertyAccessor$BasicSetter.set(BasicPropertyAccessor.java:109)
at org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropertyValues(AbstractEntityTuplizer.java:352)
at org.hibernate.tuple.entity.PojoEntityTuplizer.setPropertyValues(PojoEntityTuplizer.java:232)
at org.hibernate.persister.entity.AbstractEntityPersister.setPropertyValues(AbstractEntityPersister.java:3580)
at org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:152)
at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:877)
at org.hibernate.loader.Loader.doQuery(Loader.java:752)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259)
at org.hibernate.loader.Loader.doList(Loader.java:2232)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2129)
at org.hibernate.loader.Loader.list(Loader.java:2124)
at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:118)
该问题产生的原因是数据库中对应的字段值为NULL,这里我的数据库中is_use字段是null
解决方案
- 首先要将数据库中该字段为null 的记录设置默认值。避免程序出错。
- 数据库中设置使用默认值,当保存该字段没有值时,将默认值设置进来。
- 或者将javabean对象中对应的属性isUse由基本类型boolean修改为Boolean。