如果我的问题似乎微不足道,我是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是一种不好的做法。请澄清
答案 0 :(得分:0)
根据我的经验,在Hibernate实体bean中设置属性的任何默认值可能是Hibernate可以生成的不必要的更新命令的原因,因为它可能决定实体在从数据库读取后更改,即使应用程序实际上没有更改实体。 这里已经讨论过类似的问题: Setting default values for columns in JPA
答案 1 :(得分:0)
IIRC,默认情况下,JPA Entity bean上的字段不可为空。因此,将它们设置为null并随后将它们设置为某个有效值将被正确地视为“不良做法”。
要使列值允许空值,需要在@Column之后添加@Nullable注释。然后,如注释中所述,未设置的值将自动保存为数据库中的空列值。读取(或获取)将正确地将它们拉出来,因此没有用例需要设置它们。