用hbernate作ORM,如果读取的数据表中integer/float等类型字段数值为null,就会报set方法错误.现在数据库已经有许多记录在里面,除了将所有null字段赋默认值外,还有其他什么办法吗(我的数据库中有些字段不能随便赋默认值)?谢谢!

解决方案 »

  1.   

    不会hibernate 
    不过如果是手动写的sql的话,在sql语句里面可以给查询的空值给默认值的,比如oracle里面select nvl(student_name,'yourname') as student_name from student如果有student_name为空的话就有默认值yourname
      

  2.   


    可能跟你使用的数据库驱动有关。
    你用的什么数据库驱动(JDBC Driver)?
    如果你的数据库是MS SQL Server,不管是2000还是2005,都不要使用SQL Server 2000 的 JDBC 驱动了,用SQL Server 2005 的JDBC驱动吧,它也可以连SQL Server 2000的。我以前也遇到过类似问题,怎么都找不出原因,后来换个JDBC驱动就搞定了。呵呵。点此下载 SQL Server 2005 的 JDBC 驱动
      

  3.   

    我经常插入 null 啊,你hibernate 什么版本,数据库什么版本 驱动版本
    楼上说的有一定可能性,我遇到过版本低驱动的驱动像预编译sql注入null参数时报错。
      

  4.   

    把你的bean中的int变成Integer,float变为Float 。总之都是对象的类型就可以了。
      

  5.   

    我是楼主,谢谢大家.我用的是jtds 1.2.2,hibernate是3.1,sqlserver2000.SQL Server 2005 JDBC也有问题,会出“ResultSet   can   not   re-read   row   data   for   column   1”错误.date,sting类型如何改?谢谢!
      

  6.   

    不管是integer还是float,变量都会有默认值,
    只要你建表的时候去初始化这些字段,应该没有问题,
    我一直在使用Hibernate做为ORM,数据库是用oracle