sql server 设置非空默认值之后,hibernate添加出现错误
错误提示:
not-null property references a null or transient value:org.bean.Useres.balance;
数据库设计:
Useres:
balance 非空 默认值为0.00
<property name="balance" type="java.lang.Double">
<column name="balance" scale="4" not-null="true" />
</property>
hibernate添加:
user.setUserName(userName);
user.setPw(pw);
user.setEmail(email);
user.setPhone(phone);
user.setZipcode(zipcode);
this.getHibernateTemplate().save(user);
没有设置 user.getBalance()的值;
这种错误产生的原因就是 一个非空的值传入空值。
若把 not-null="true" 改成 not-null="false",数据库为可为空。能添加成功,该列为空,没有把默认值给balance
怎么解决?
------解决方案--------------------
不太会从配置上来解决问题的方法,但是个人觉得可以投机取巧,在user的所有构造函数里面将balance赋上一个初始值,不知道这种方法可否。。。嘿嘿!
------解决方案--------------------给Balance设置初始值为0.00,在进行添加即可
------解决方案--------------------
其实你这个问题很简单,因为数据库是非空的字段,在添加的时候没有添加balance所以肯定会出错
在添加的时候给balance给个初始值就行了
------解决方案--------------------
因为你用的是java.lang.Double,对象类型,对于hibernate来说,如果没有初始值就是null,如果使用double类型,那么没有初始值就是0,不一样的
所以,如果使用对象类型的非空字段,最好初始化一下,比如在你的类里定义Double banace = 0之类的,这样,new出来的实体初始值就是0了