我想能够查询一个员工的联系方式。这是我的模型。
你可以假设控制器在工作。
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;
}
联系人与所有者或任何其他实体之间的关系是一对一的。
有人能帮我把实体Map到另一个实体上,这样数据就可以持久化了吗?我想做的是一个好的练习,还是有更好的方法?
通过电子邮件查询时所需的输出:
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"
}
}
注意:如果我在pojo中的输出中遗漏了任何数据,请忽略。
1条答案
按热度按时间2wnc66cl1#
国际海事组织
Contact
不应该有任何Map到Owner
或者Employee
. 如果你不需要它,就不要绘制Map。您可以使用hql查询来查询数据,如FROM Owner o JOIN o.contact c WHERE c.emailAddress = :email
.