我需要记录每一个城市的各种企业、城市和分支机构。每个企业可能在不同的城市,在每个城市可能有不同的分支机构。
以银行为例。它可能是在城市A和B,在城市A可能有两个分支,而在城市B只有一个。
我认为分支表应该有连接表的两个主键的分支I和外键。通过这种方式,我可以确保任何分支机构都不会与城市和企业的多个组合相关联。
Business City
\ /
BusinessID CityID <<join table has primary keys of Business and City tables
|
Branch
BranchID BusinessID CityID样本数据
Business Table
1
2
3
City Table
A
B
C
Join Table
Business_City
1 A
1 B
2 A
3 C
Branch Table
Business City Branch
1 A I1
1 A I2
1 B I6
2 A I5
3 C I3正如你所看到的,业务1和2都在A市,业务1在A城市有两个分支,而业务2只有一个分支等等。
我应该如何将分公司映射到一个企业和一个城市?
发布于 2015-03-30 05:47:25
您的映射应该是这样的:
@Entity
public class Business {
@Id
private Long id;
@OneToMany(mappedBy = "business")
private Set<Branch> branches = new HashSet<>();
}
@Entity
public class City {
@Id
private Long id;
@OneToMany(mappedBy = "city")
private Set<Branch> branches = new HashSet<>();
}
@Entity
public class Branch {
@Id
private Long id;
@ManyToOne
@JoinColumn(name = "business_id")
private Business business;
@ManyToOne
@JoinColumn(name = "city_id")
private City city;
}这种中间实体映射是比使用@ManyToMany更好关联,它可能生成一些效率较低的SQL查询,并且不允许您向链接表中添加其他列。
https://stackoverflow.com/questions/29292380
复制相似问题