【发布时间】:2018-01-03 10:44:54
【问题描述】:
我有一个具有复合主键的@Entity。因此,我创建了一个 @EmbeddedId 来保存 PK 字段。
问题:直接通过id.* 访问这些字段更好,还是应该在父类中创建getter/setter?
例子:
@Entity
public class MyPerson {
@EmbeddedId
private PersonId id;
public String getFirstname() {
return id.getFirstname();
}
public String getLastname() {
return id.getLastname();
}
public LocalDate getDob() {
return id.getDob();
}
}
@Embeddable
public class PersonId implements Serializable {
private String firstname;
private String lastname;
private LocalDate dob;
//getter+setter as well
}
我应该更好地使用person.getFistname() 还是person.getId().getFirstname()?
前者更清楚,但缺点是我必须在 MyPerson 和 PersonId 中创建 getter。
什么应该是首选的访问方式,为什么?
【问题讨论】:
-
这可能是一个偏好问题,但我想说不要在父类中提供 getter 和 setter。如果嵌入类中的字段发生变化怎么办?有些可能会导致编译错误,但是如果您向其中添加一个字段并忘记将 getter/setter 包装在父类中怎么办?我个人在嵌入式类上使用 getter 和 setter,
person.getId().getFirstName()也是如此 -
我想知道JPA规范中是否也有任何关于它的内容?download.oracle.com/otndocs/jcp/persistence-2_1-fr-eval-spec/…我自己什么都看不到