Я использую спецификацию JPA2 с Hibernate в качестве провайдера персистентности.Может кто-нибудь подсказать мне, как отобразить две коллекции элементов одного типа в одном классе?Например,
</p>
<pre><code> public class Employee {
@Id //...
private Long id;
@ElementCollection
private Collection<String> tempAddresses;
@ElementCollection
private Collection<String> permanentAddresses;
}
При отображениях по умолчанию во время режима гибернации нагрузки невозможно различить два списка, поскольку они сопоставлены с одним и тем же соединениемстолбец (т. е. столбец идентификатора).
Редактировать 1 Я забыл упомянуть, что мое требование состоит в том, чтобы сопоставить оба набора элементов в одну и ту же таблицу, поскольку оба являются адресами.Таким образом, сопоставления должны выглядеть следующим образом:
public class Employee {
@Id //...
private Long id;</p>
<pre><code> @ElementCollection
@CollectionTable(name = "ADDRESS", joinColumn = @JoinColumn(name = "EMP_ID"))
@Column(name = "ADDRESS_ID")
private Collection<String> tempAddresses;
@ElementCollection
@CollectionTable(name = "ADDRESS", joinColumn = @JoinColumn(name = "EMP_ID"))
@Column(name = "ADDRESS_ID")
private Collection<String> permanentAddresses;
}
Поскольку обе коллекции сопоставлены с одной и той же таблицей сбора и объединены с одним и тем же столбцом идентификатораследовательно, во время загрузки hibernate не может различить, какие адреса являются временными, а какие постоянными.