Я создал однонаправленную таблицу соединений JPA, очень внимательно следуя документации JPA (http://www.jpox.org/docs/1_2/jpa_orm/one_to_many_list.html).
Я мог бы без проблем вставить заявителя, А, со списком вакансий (JobOne, JobTwo). Однако, когда я пытался вставить другого заявителя B, с работой, уже занятой другим заявителем, например, список вакансий (JobOne), он выбросил исключение:
'Дублирующаяся запись' JobOne 'для ключа' jobId '
В документации написано The join table will NOT be given a primary key (so that duplicates can be stored)
, но не похоже, что они используют составной ключ (ApplicI, JobId) для таблицы соединения.
public class Applicant
{
private long applicantId;
private List<Job> jobList;
@OneToMany(fetch=FetchType.EAGER, cascade=CascadeType.ALL)
@JoinTable(name="applicant_job",
joinColumns={@JoinColumn(name="applicantId")},
inverseJoinColumns={@JoinColumn(name="jobId")})
public List<Job> getJobList() {
return jobList;
}
//getters, setters
}
public class Job
{
private long jobId;
//getters, setters
}