gpt4 book ai didi

java - 如何访问@EmbeddedId 的字段?

转载 作者:行者123 更新时间:2023-11-29 04:22:47 24 4
gpt4 key购买 nike

我有一个具有复合主键的@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()

前者更清晰,但缺点是我必须在 MyPersonPersonId 中创建 getter。

首选的访问方式应该是什么,为什么?

最佳答案

您不必创建属性

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);

关于java - 如何访问@EmbeddedId 的字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48075807/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com