HIbernate在数据库记录中字段为空时不获取值

the*_*ter 7 java hibernate

我使用下面的hibernate代码从数据库中获取数据.

SessionFactory factory = null;
    Session session = null;
    try {
        factory = getSessionFactory();
        session = factory.openSession();

        final Criteria criteria = session
                .createCriteria(CrfEmailDataBean.class);
        criteria.add(Restrictions.eq(CAMPN_NBR, campNbr));
        returnList = criteria.list();
    } catch (Exception e) {
        logger.error(e.getMessage());
        throw new DAOException(e);
    } finally {
        DBUtil.close(factory, session);
    }
    if (logger.isInfoEnabled()) {
        logger.info(LOG_METHOD_EXIT);
    }
    return returnList;
}
Run Code Online (Sandbox Code Playgroud)

在里面CrfEmailDataBean class,我已经声明了一个private String crfEmailTypeCd;在数据库中为空的字段.由于null,它不在返回列表中设置记录.如果我去数据库中的字段内输入一个值,它就会获取.

我尝试直接在sql数据库上运行查询,形成的查询是正确的并获取所有数据.

为什么不提取该记录?我该如何解决这个问题?

Mar*_*ira 0

当您使用相同的类型属性原语时,需要设置默认值,相同的零(0)或(a)(..)

private int number;
private int value;
private char option;
Run Code Online (Sandbox Code Playgroud)

如果hibernate数据库准备就绪为null,当Hibernate生成器的转换器出现错误

  • 这种从不使用原始类型的解决方案
  • 或者定义属性的默认值
  • 其他可能性你的日期不为空,这个值白色
  • 白色与空值不同
  • 进行测试放置条件 Restrictions.isNotNull。
  • 进行其他测试放置条件Restrictions.isNull。
  • 其他测试使方法接收 int,调用发送一个 Integer null

第一项

private Integer number;
private Integer  value;
private Character option;
Run Code Online (Sandbox Code Playgroud)

最后一项测试

public class Test{

    public static void setInt(int value){
       System.out.println(value);
    }

    public static void main(String[] args)
    {
        Integer testValue=null;
        Test.setInt(testValue);
    } }
Run Code Online (Sandbox Code Playgroud)