org.hibernate.PropertyAccessException: Null value was assigned to a property of primitive type setter of xxx类
如果在使用hibernate的时候出现【org.hibernate.PropertyAccessException: Null value was assigned to a property of primitive type setter of xxx类】这样的错误信息,原因一般都是因为数据库中表字段对应的数据与该字段预设的数据类型不一致导致的,比如数据库表字段的数据类型为Numeric(20, 6),但是保存的值却是NULL,这时候去取该字段的值到Java中相对应的简单类型字段中(简单类型字段不支持Null值),就会报该错。
解决的办法有两个:
一个是把实际数据的数据类型和表字段的数据类型调整成数据类型一样的即可,比如当该字段为Null的时候,给其赋初值0,就能有效避免这个错误;
if (yanggb == null) { yanggb = 0; }
另一个就是使用Java中提供的包装类型,包装类型支持Null值,并能自动拆箱成简单类型,一般是建议使用这个方法。
private Double yanggb; // java.lang.Double,为double的包装类型
<property name="yanggb" type="java.lang.Double" column="yanggb" length="256"/>
注意这里的类型必须填写java.lang.Double,而不能像简单类型那样直接填写double。
"有些人路过了, 就真的路过了。"
你要去做一个大人,不要回头,不要难过。