在我的Person
实体中,假设我想创建一个不可变字段 - name
。
@Entity
public class Person {
@Id
private Long id;
@Column(name = "name")
private String name;
public Person() {} // no-args constructor for Hibernate
// getter for id and name fields
}
据我所知,以下内容足以让Hibernate根据id
查找来检索某个人 - 它会使用Hibernate的setters
来id
和{{ 1}}。
但是,如果我想创建一个带有不可变name
字段的新Person
,我该如何更改上述代码?
答案 0 :(得分:2)
添加一个名为arg的构造函数。 Hibernate需要存在no-arg构造函数,但它并不需要公开。强制调用代码以使用名称为arg。
的构造函数或者使用一个静态的Builder类,它可以直接设置私有字段;但在这种情况下,这似乎有些过分。