Java

Null value was assigned to a property of primitive type sette

时间:2016-4-23 14:08:00  作者:WPF之家  来源:http://www.wpf123.com/  查看:902  评论:0
内容摘要:org.hibernate.PropertyAccessException: Null value was assigned to a property of primitive type sette数据库里amount字段值为NULL,进行对象持久化关联时,企图给对象的这个属...

org.hibernate.PropertyAccessException: Null value was assigned to a property of primitive type sette

数据库里amount字段值为NULL,进行对象持久化关联时,企图给对象的这个属性赋值为空,而对象实例的这个属性不能为空值,所以出现错误。【amount是int型,不能为空】

 

 解决方法:将该字段在类中的类型定义为Integer。

Integer   code和int   code的区别:
Integer是对象        code   =   null;   对象可以为空.   
int   是普通类型        不可能   =   null.       
根据在数据库里,code是可以空的,故应该映射成Integer类型的。 而且hibernate中要用包装类Java.long.Integer,不要用基本类型Integer.

------------------------------------------------------------------------------------------------------------------------

错误原因:totalTime的类型为int,数据库中为NULL,int 类型不能赋值为NULL,只能为0,所以报此异常。

解决方案:将totalTime的类型改为Integer,或者初始化为0

====================================================================

在action请求数据的过程中报出"Null value was assigned to a property of primitive type setter of"错误,搜索之后发现是因为数据库里相应的字段为NULL。

例如:

Java代码  

<!--Hibernate映射文件中的字段--> 

<property name="printTime" type="long"><column name="print_time"/></property> 

  1. <!--Hibernate映射文件中的字段-->  
  2. <property name="printTime" type="long"><column name="print_time"/></property>  

其中的类型为hibernate类型,在生成的类中,printTime字段为long类型,为基本类型,不能为NULL.
解决方法:
    第一种:数据库字段不设置为空;
    第二种:手动修改映射文件,printTime使用Java类型Long,即type="java.lang.Long",Book类中的字段也要改为Long。同理,int为Integer.
    第三种:在反向工程时使用Java类型,而不是hibernate类型。

==============================================================================

今天碰到这个问题(如题),开始不知道是什么原因,后来看了数据库里字段的类型,与实体中字段类型比较,原来是误把integer写成了int类型,导致了这个错误。

原理如下:

Integer   property与int   property的区别: 
Integer是对象.     因此可以为null(对象可以为空.),即property   =   null;      
int   是普通类型, 不可以为null.

数据库中的property是空的,可以映射额外integer类型,但是不能映射为int类型,如果误在实体中将property定义成了int类型,就有可能会出这种错误。       


解决方法:

将实体中对应property修改为integer类型。

=====================================================================================



标签:Null value  a property of primitive type sette 

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。本文出自“wpf之家”,请务必保留此出处:http://www.wpf123.com

相关评论
Copyright © 2009-2014 WPF之家(http://www.wpf123.com/) All rights reserved
 Powered by WPF之家
鄂ICP备13006396号