我有两个实体:公民和地址。
公民可以有两种类型的地址 - 真实和注册。每一个都是一个List。
因此,我的Citizen实体中有两个字段:
@ManyToMany
@JoinTable(name = "TBCITIZEN_REG_ADDRESS", joinColumns = @JoinColumn(name = "CITIZEN_ID"),
inverseJoinColumns = @JoinColumn(name = "ADDRESS_ID"))
private List<Address> registrationAddresses;
@ManyToMany
@JoinTable(name = "TBCITIZEN_REAL_ADDRESS", joinColumns = @JoinColumn(name = "CITIZEN_ID"),
inverseJoinColumns = @JoinColumn(name = "ADDRESS_ID"))
private List<Address> realAddresses;
如您所见,我在DB中使用两个表来映射实体之间的关系。如果要添加其他类型,我应该添加一个新表。
我想在DB中使用类似的东西映射关系:
CITIZEN_ID | ADDRESS_ID | TYPE
1 | 1 | REAL
1 | 2 | REAL
1 | 1 | REG
2 | 3 | REAL
有没有办法将它用于地图ManyToMany和JPA?
UPD
我知道有@WhereJoinTable Hibernate注释。但我正在使用EclipseLink,用纯JPA来处理它会很棒