JPA映射中的原始类型。如果数据库列可能为NULL怎么办?

时间:2013-02-15 11:40:00

标签: java hibernate jpa orm primitive

鉴于此类使用JPA映射(使用JPA 1.0和Hibernate):

@Entity
public class Foo {

    private int bar;

    /* ... */
}
  1. 如果我尝试加载BAR列设置为NULL的记录会发生什么?
  2. 当相应的列为NULL时,我可以指定如何设置bar字段吗?
  3. 备注

    我知道这不是最佳做法。问题更多的是出于好奇,而且受到这种情况的启发:

    • 数据库表是一个临时表:添加NOT NULL约束是不切实际的。错误的数据是预期的,我的代码的重点是在将数据加载到“真实”数据库之前验证,清理和/或拒绝数据。
    • 某些字段的默认值可以接受。例如,boolean标记应默认为false

2 个答案:

答案 0 :(得分:12)

如果列可能包含空值,我宁愿使用对象,因为Matheus的想法会引入错误数据。 NULL <> 0

答案 1 :(得分:4)

  1. 异常
  2. 2

    @Column(name = “bar”, nullable = false, columnDefinition = “bigint(20) default 0″)
    private int bar;
    

    它解决了你的问题。