我有一个@Entity,它有一个复合主键。因此,我创建了一个保存PK字段的@EmbeddedId。
问:通过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。
什么应该是访问的首选方式,为什么?
发布于 2018-01-03 11:14:52
您不必创建属性。
private PersonId id可选是
@Entity @IdClass(PersonId.class)
public class MyPerson {
@Id private String firstname;
@Id private String lastname;
@Id private LocalDate dob;
// Getters and setters here
}并且只在加载PersonId实体时使用MyPerson:
PersonId peronId = new PersonId(firstname, lastname, dob);
MyPerson person = session.get(MyPerson.class, personId);https://stackoverflow.com/questions/48075807
复制相似问题