将 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 注释。然后如评论中所述,未设置的值将自动保存为数据库中的空列值。读取(或获取)将正确地提取它们,因此没有需要在您拥有它们时进行设置的用例。
我是 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 注释。然后如评论中所述,未设置的值将自动保存为数据库中的空列值。读取(或获取)将正确地提取它们,因此没有需要在您拥有它们时进行设置的用例。