我正在尝试创建一个实体,该用户具有两个地址,一个家庭住址和一个工作地址。
我不想将地址信息直接存储在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
}
如何使用Spring JPA做到这一点?我了解这是一个ManyToOne关系,但是我不确定如何将两个ManyToOne关系映射到一个实体。这有可能吗?
非常感谢任何帮助。
谢谢!
答案 0 :(得分:1)
那真的很简单。只需将您的 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
}
表结构如下:
user(id, fk_home_address, fk_work_address)
请注意,这是单向关系。
答案 1 :(得分:0)
private Integer id;
private Address homeAddress;
private Address workAddress;
在第一种情况下,您的结构表将是
user(id,home_address_id,work_address_id)
您可能会考虑采用第二种结构
private Integer id;
private List<Address> userddress;//using one to many
您的表结构将是
address(id,user_id)
这取决于您要如何组织结构。