JPA中是否有办法映射类型为Map<String, Set<Address>>
鉴于以下类别:
class Company {
int id;
Map<String, Set<Address>> addresses; // Key is the country of the Address
}
class Address {
int id;
String country;
}
有三个表格:
tbl_company
id INT
tbl_address
id INT
country VARCHAR(40)
tbl_company_address
company_id INT
address_id INT
如何使用JPA映射此方案
答案 0 :(得分:1)
一种可能的解决方案是使用地址包装类,并将Set插入该类。在这种情况下,您将能够使用map(使用@OneToMany,@ MapKey注释)。 E.g。
@OneToMany(mappedBy = ...)
@MapKey(name = "countryKey")
private Map<String, AddressWrapper> addressWrappers;
..和AddressWrapper将包含@OneToMany Set<Address> addresses;
以及String countryKey
。