如何在JPA中映射集合映射

时间:2010-12-20 13:39:31

标签: java jpa

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映射此方案

1 个答案:

答案 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