当前位置: 代码迷 >> Java Web开发 >> sql server 设置非空默认值之后,hibernate添加出现异常
  详细解决方案

sql server 设置非空默认值之后,hibernate添加出现异常

热度:4408   发布时间:2013-02-25 21:15:20.0
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了
  相关解决方案