使实体的字段不可变

时间:2014-07-14 15:29:56

标签: hibernate immutability

在我的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的settersid和{{ 1}}。

但是,如果我想创建一个带有不可变name字段的新Person,我该如何更改上述代码?

1 个答案:

答案 0 :(得分:2)

添加一个名为arg的构造函数。 Hibernate需要存在no-arg构造函数,但它并不需要公开。强制调用代码以使用名称为arg。

的构造函数

或者使用一个静态的Builder类,它可以直接设置私有字段;但在这种情况下,这似乎有些过分。