Java 如何在Hibernate应用程序中处理数据库空值?

Java 如何在Hibernate应用程序中处理数据库空值?,java,hibernate,Java,Hibernate,由于数据库表中的空值,我得到“org.hibernate.PropertyAccessException”。如何处理异常 我的档案是 FetchTest.java package com.raj.java.hibernatedemos; 导入org.hibernate.Session; 导入org.hibernate.SessionFactory; 导入org.hibernate.cfg.Configuration; 公共类回迁测试{ 公共静态void main(字符串[]args){ Con

由于数据库表中的空值,我得到“org.hibernate.PropertyAccessException”。如何处理异常

我的档案是

FetchTest.java

package com.raj.java.hibernatedemos;
导入org.hibernate.Session;
导入org.hibernate.SessionFactory;
导入org.hibernate.cfg.Configuration;
公共类回迁测试{
公共静态void main(字符串[]args){
Configuration cfg=new Configuration().configure(“hibernate.cfg.xml”);
SessionFactory=cfg.buildSessionFactory();
会话session1=factory.openSession();
Employee emp1=(Employee)session1.get(Employee.class,7839);
System.out.println(emp1.getEmpno()+“”+emp1.getEname()+“”+emp1.getSal());
session1.close();
会话session2=factory.openSession();
Employee emp2=(Employee)session2.load(Employee.class,7839);
System.out.println(emp2.getEmpno()+“”+emp2.getEname()+“”+emp2.getSal());
session2.close();
}

}
我个人建议实际“清理”数据库值,可能会将列设置为不可空

但如果这无法完成,您可以做的是修改setter,以便它检查
null

public void setComm(Double comm) {
    if(null != comm){
        this.comm = comm;

    }else{
        this.comm = 0;
    }
}

希望这有帮助

您的mgr属性为int,不允许为null。将其更改为整数,这允许null。或者为您的mgr列设置默认值。

避免Hibernate尝试将空值设置为原语的最佳方法是使用包装类(整数、长、双等);特别是,如果您需要将一列或2添加到现有表中。自动装箱是您的朋友。

您可以修改setter,使其检查
null
值并将其替换为零。@Raj您可以将mgr字段从int更改为整数吗?@jmcg谢谢您的回答,但我们可以使用吗!=具有双精度空值的运算符?我不认为soit抛出错误“运算符!=参数类型double未定义,null”对不起。我意识到double是一个原始的。将变量包装为一个
Double
对象