将 NULL 值分配给持久列

Assigning NULL value to the persistent column

我是 JPA 的新手,如果我的问题看起来微不足道,请原谅。

我有一个名为客户的实体

@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 是一种不好的做法。请澄清

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

IIRC,JPA 实体 bean 上的字段默认情况下不可为空。因此,将它们设置为 null 并随后将它们设置为某个有效值将被正确地视为 "bad practice"。

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