我的数据库设计中有以下关系:如何通过hibernate映射实现它?
我有一个客户端表。每个客户都可以拥有多个“设施”以及多个证券 此外,每个工厂都可以被多种证券所覆盖。
例如,
客户c1:设施F1 F2 F3
客户端c1:具有安全性S1 S2 S3对于这个特定的客户c1:
安全S1涵盖设施F1
安全S2涵盖设施F2
安全S3涵盖设施F1,F2,F3
所以我们可以进行客户端设施映射
c1 - F1
c1 - F2
c1 - F3
和客户端安全性映射
c1 - S1
c1 - S2
c1 - S3
我们需要客户端设施安全映射吗?
C1-F1-S1
C1-F2-S2
C1-F1-S3
C1-F2-S3
c1-F3-S3
有没有更好的方法呢? 另外我如何在hibernate映射中处理这个?
我可以为客户端设施和客户端安全提供多对多的映射 但是如何使用hibernate映射在 client-facility-security 表中填充数据?或给定要求的任何其他解决方案? 我可以只有一个表 client-facility-security 并避免休息两个表吗?
答案 0 :(得分:0)
您可以使用@OneToMany()和@ManyToOne()..要将Facility连接到多个证券,您可以使用@OneToMany注释Facility的主键,就像在Client类中完成它一样
public class Client {
@Column(name="CLIENT_ID")
private int id;
@OneToMany(mappedBy="facilityReference", fetch = FetchType.EAGER)
List<Facilities> facility = new ArrayList<>();
@OneToMany(mappedBy="securityReference", fetch = FetchType.EAGER)
List<Security> security = new ArrayList<>();
... Getters and Setters
}
public class Facility {
private String CLIENT_ID;
@ManyToOne
@JoinColumn(name="CLIENT_ID")
private Client facilityReference;
}
public class Security {
private String CLIENT_ID;
@ManyToOne
@JoinColumn(name="CLIENT_ID")
private Client securityReference;}