【发布时间】:2021-07-20 18:33:24
【问题描述】:
我希望能够通过联系方式查询员工。 这是我的模型。
你可以假设我的控制器在工作。
public abstract class BaseEntity implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
public boolean isNew() {
return this.id == null;
}
}
public abstract class PersonalInformation extends BaseEntity {
@Temporal(TemporalType.DATE)
private Date dateOfBirth;
private String gender;
}
public abstract class Person extends PersonalInformation implements Serializable {
private String firstName;
private String lastName;
private String middleName;
private String alias;
@Temporal(TemporalType.DATE)
private Date dateOfBirth;
private String gender;
@OneToOne(cascade = CascadeType.ALL)
private Contact contact;
}
public class Owner extends Person implements Serializable {
}
public class Contact extends BaseEntity {
private String emailAddress;
private String mobileTelNo;
private String homeTelNo;
private String workTelNo;
}
这是我尝试过的,认为持久性将是双向的,当我构建控制器时,我可以构建响应以包括所有者或员工或我系统中可能拥有的其他实体联系人
public class Contact extends BaseEntity {
private String emailAddress;
private String mobileTelNo;
private String homeTelNo;
private String workTelNo;
@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private Owner owner;
@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private Employee employee;
}
联系人与所有者或任何其他拥有联系人的实体之间的关系是一对一的。
有人可以帮我将我的实体一个一个映射到另一个,这样数据就可以持久保存吗? 我想做的事情是好的做法,还是有更好的方法?
通过电子邮件查询时所需的输出:
GET: http://localhost:8080/v1/contact/email/jow.doe@stackoverflow.com
{
"firstName": "Joe",
"lastName": "Doe",
"middleName": "None",
"alias": "JD",
"dateOfBirth": "2000-02-12",
"gender": "male",
"contact": {
"emailAddress": "joe.doe@stackoverflow.com"
}
}
注意:如果我错过了 pojos 中输出中的任何数据,请忽略。
【问题讨论】:
标签: java sql hibernate jpa relation