将NULL值分配给持久列

时间:2017-07-20 18:08:17

标签: java jpa eclipselink

如果我的问题似乎微不足道,我是JPA的新手,请原谅。

我有一个名为customer

的实体
@Entity("CUSTOMER_DETAILS")
public class Customer {

    @Id
    @Column(name = "customer_id")
    private String customerId = null;    

    @Column(name = "name")
    private String name = null;

    @Column(name = "Id")
    private String Id = null;

    @Transient
    private List<Coupons> coupons;
}

我的一位高年级学生声称将持久性列设置为null是一种不好的做法。请澄清

2 个答案:

答案 0 :(得分:0)

根据我的经验,在Hibernate实体bean中设置属性的任何默认值可能是Hibernate可以生成的不必要的更新命令的原因,因为它可能决定实体在从数据库读取后更改,即使应用程序实际上没有更改实体。 这里已经讨论过类似的问题: Setting default values for columns in JPA

答案 1 :(得分:0)

IIRC,默认情况下,JPA Entity bean上的字段不可为空。因此,将它们设置为null并随后将它们设置为某个有效值将被正确地视为“不良做法”。

要使列值允许空值,需要在@Column之后添加@Nullable注释。然后,如注释中所述,未设置的值将自动保存为数据库中的空列值。读取(或获取)将正确地将它们拉出来,因此没有用例需要设置它们。