hibernate.PropertyAccessException: Null value was assigned to a property of primitive type
Posted duenboa
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hibernate.PropertyAccessException: Null value was assigned to a property of primitive type相关的知识,希望对你有一定的参考价值。
日志:
[WARN-2016/07/26/18/:45/:52]ProcessEngineServiceImpl.(257) - 审批流程log日志——submitProcess方法:提交人userId:3333333349,TaskId:245959,ProcInstId:null,WfInstaceId:16583386853,当前时间:Tue Jul 26 18:45:52 CST 2016 [ERROR-2016/07/26/18/:45/:52]ProjectRepayController.(129) - 审批流程出错!Null value was assigned to a property of primitive type setter of com.boa.workflow.model.domain.WfFlowLinkInst.nextSort; nested exception is org.hibernate.PropertyAccessException: Null value was assigned to a property of primitive type setter of com.boa.workflow.model.domain.WfFlowLinkInst.nextSort org.springframework.orm.hibernate3.HibernateSystemException: Null value was assigned to a property of primitive type setter of com.boa.workflow.model.domain.WfFlowLinkInst.nextSort; nested exception is org.hibernate.PropertyAccessException: Null value was assigned to a property of primitive type setter of com.boa.workflow.model.domain.WfFlowLinkInst.nextSort at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:690) at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:106) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:403) at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:58) at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:213) at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:163) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) at org.springframework.data.jpa.repository.support.LockModeRepositoryPostProcessor$LockModePopulatingMethodIntercceptor.invoke(LockModeRepositoryPostProcessor.java:105) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:91) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) at com.sun.proxy.$Proxy3630.findByWfInstanceIdAndUserid(Unknown Source) at com.boa.workflow.manager.impl.WfCommentManagerImpl.flowRuntimeToComment(WfCommentManagerImpl.java:82) at com.boa.workflow.manager.impl.WfCommentManagerImpl.insertComment(WfCommentManagerImpl.java:52) at com.boa.workflow.service.ProcessEngineServiceImpl.submitProcess(ProcessEngineServiceImpl.java:277) at com.boa.workflow.service.ProcessEngineServiceImpl.completeTask(ProcessEngineServiceImpl.java:223) at com.boa.workflow.service.ProcessEngineServiceImpl.dealWf(ProcessEngineServiceImpl.java:106) at com.boa.workflow.service.ProcessEngineServiceImpl$$FastClassByCGLIB$$3de96632.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:627) at com.boa.workflow.service.ProcessEngineServiceImpl$$EnhancerByCGLIB$$eff4e582.dealWf(<generated>) at com.boa.workflow.service.ProcessProxyServiceImpl.approvalWorkFlow(ProcessProxyServiceImpl.java:117) at com.boa.workflow.service.ProcessProxyServiceImpl$$FastClassByCGLIB$$dc3563e8.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:698) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:96) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:260) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:631) at com.boa.workflow.service.ProcessProxyServiceImpl$$EnhancerByCGLIB$$d84bd278.approvalWorkFlow(<generated>) at com.boa.weixin.controller.costmanager.expenses.ProjectRepayController.approvalProjectRepayApply(ProjectRepayController.java:122) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) Caused by: org.hibernate.PropertyAccessException: Null value was assigned to a property of primitive type setter of com.boa.workflow.model.domain.WfFlowLinkInst.nextSort at org.hibernate.property.DirectPropertyAccessor$DirectSetter.set(DirectPropertyAccessor.java:143) at org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropertyValues(AbstractEntityTuplizer.java:710) at org.hibernate.tuple.entity.PojoEntityTuplizer.setPropertyValues(PojoEntityTuplizer.java:379) at org.hibernate.persister.entity.AbstractEntityPersister.setPropertyValues(AbstractEntityPersister.java:4509) at org.hibernate.engine.internal.TwoPhaseLoad.doInitializeEntity(TwoPhaseLoad.java:186) at org.hibernate.engine.internal.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:137) at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:1108) at org.hibernate.loader.Loader.processResultSet(Loader.java:964) at org.hibernate.loader.Loader.doQuery(Loader.java:911) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:342) at org.hibernate.loader.Loader.doList(Loader.java:2526) at org.hibernate.loader.Loader.doList(Loader.java:2512) at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2342) at org.hibernate.loader.Loader.list(Loader.java:2337) at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:338) at org.hibernate.internal.SessionImpl.listCustomQuery(SessionImpl.java:1827) at org.hibernate.internal.AbstractSessionImpl.list(AbstractSessionImpl.java:231) at org.hibernate.internal.SQLQueryImpl.list(SQLQueryImpl.java:157) at org.hibernate.ejb.QueryImpl.getSingleResult(QueryImpl.java:287) ... 71 more
分析代码:
实体类:
@Entity
@Table(name = "table_name")
public class WfFlowLinkInst extends AuditAuto {
@Column(name = "next_sort")
private int nextSort;
//getter setter .....
}
数据库该属性对应字段:
next_sort tinyint(4) NULL 下一个审批节点序号
原因:
数据库字段为整型, 实体类中对应字段为int, 如果数据库中该字段查询到的值为null, 则hibernate无法将其映射为基本类型int.
解决办法:
将实体类的数据类型设置为基本类型的包装类. Integer , 尽量避免实体类属性使用基本类型!!!!包装类可以解决部分空指针问题.
@Column(name = "next_sort")
private Integer nextSort;
以上是关于hibernate.PropertyAccessException: Null value was assigned to a property of primitive type的主要内容,如果未能解决你的问题,请参考以下文章