在hibernate查询执行时,是否将空值赋给基本类型的属性?

时间:2013-02-12 07:06:48

标签: java sql hibernate

我在dao中有以下代码段

 String GET_CUSTOMER="SELECT * from customer where custName=:custName"
  Session session = getHibernateUtil().getSession();
  SQLQuery query = session.createSQLQuery(GET_CUSTOMER);

    query.setParameter("custName", custName);
    query.setResultTransformer(Transformers
        .aliasToBean(Customer.class));

    Customer custData = (Customer) query
        .uniqueResult();//line

Customer表有一些int列,其中一些值为null。现在在第1行我得到错误 空值已分配给Customer.Address

的基本类型setter的属性

hibernate / query / Transformer中是否有办法自动将空值转换为0? 我刚刚提到了一个表,即客户,但是有各种各样的连接表,其中包含各种列中的int值为null,所以我这样做 不希望在每个表的查询中处理。

更新: - 客户不是Hibernate实体。它使用int类型的实例字段

2 个答案:

答案 0 :(得分:5)

  

Customer表有一些int列,其中一些值为null。

在这种情况下,我建议改为使用Integer字段。虽然你可能可能会让Hibernate合并NULL0(尽管可能不是一种简单的全局方式),但它并没有真正有效地映射你的数据 - 为什么你想要丢失这样的信息?

答案 1 :(得分:0)

我不知道Hibernate变换器,但我有不同的想法。你能改变数据库吗?您可以使列不可为空并使用默认值0.这样,您可以存储在数据库中的所有可能值都可以映射到int原语。