用hibernate在springboot中查询联系人详细信息的java模型

ie3xauqp  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(319)

我想能够查询一个员工的联系方式。这是我的模型。
你可以假设控制器在工作。

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中的输出中遗漏了任何数据,请忽略。

2wnc66cl

2wnc66cl1#

国际海事组织 Contact 不应该有任何Map到 Owner 或者 Employee . 如果你不需要它,就不要绘制Map。您可以使用hql查询来查询数据,如 FROM Owner o JOIN o.contact c WHERE c.emailAddress = :email .

相关问题