Spring JPA 一个实体中的多个多对一关系

alp*_*sis 2 java spring jpa spring-boot

我正在尝试创建一个实体,即具有两个地址的用户,一个家庭地址和一个工作地址。

我不想将地址信息直接存储在 User 类中,而是想对其进行规范化并将所有地址存储在一个表中,然后将它们链接到用户。就像这样:

@Entity
public class User {

    @Id
    private Integer id;
    private Address homeAddress;
    private Address workAddress;

    // getters and setters
}

@Entity
public class Address {

    @Id
    @GeneratedValue (strategy = GenerationType.AUTO)
    private Integer id;
    private String streetNumberAndName;
    private String apartmentOrSuiteNumber;
    private String city;
    private String state;
    private String zipcode;

    // getters and setters
}
Run Code Online (Sandbox Code Playgroud)

如何使用 Spring JPA 执行此操作?我知道这是一种多对一关系,但我不确定如何将两个多对一关系映射到一个实体。这可能吗?

非常感谢任何帮助。

谢谢!

ina*_*cao 5

这真的很简单。只需映射您的User类,例如:

@Entity
public class User {

    @Id
    private Integer id;

    @ManyToOne
    @JoinColumn(name = "fk_home_address")
    private Address homeAddress;

    @ManyToOne
    @JoinColumn(name = "fk_work_address")
    private Address workAddress;

    // getters and setters
}
Run Code Online (Sandbox Code Playgroud)

表结构将是这样的:

user(id, fk_home_address, fk_work_address)
Run Code Online (Sandbox Code Playgroud)

请注意,这是单向关系。

如果您想了解更多信息,寻找示例的最佳位置是这里。如果您正在寻找双向关系,请在此处学习。