【发布时间】:2019-04-07 05:25:29
【问题描述】:
我正在尝试创建一个实体,用户有两个地址,一个家庭地址和一个工作地址。
我不想将地址信息直接存储在 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 执行此操作?我知道这是一个多对一关系,但我不确定如何将两个多对一关系映射到一个实体。这甚至可能吗?
非常感谢任何帮助。
谢谢!
【问题讨论】:
-
如果您只想单向从
User映射到Address,这应该不是问题:只需完全按照您的方式映射homeAddress和workAddress如果每个人都是唯一的Address。 -
@KevinAnderson 这样就足够了:在 OneToMany 私人地址 homeAddress;在 OneToMany 私有地址 workAddress;
-
应该是
@ManyToOne而不是@OneToMany,而且两者都应该是@JoinColumn(referencedColumnName="id")。试一试。可能发生的最坏情况是来自 JPA 的恶意消息说“你不能那样做”,然后我们必须尝试其他方法。
标签: java spring spring-boot jpa