Ваше сопоставление фактически определяет два независимых однонаправленных отношения. Вам нужно одно двунаправленное отношение. Следующий код установит двунаправленное отношение.
@OneToMany(cascade = CascadeType.ALL, mappedBy = "purchaseListId")
@JoinColumn(name="pl_id",referencedColumnName="id")
private List<PurchaseListItems> purchaseListItems;
Атрибут mappedBy необходим, так как поставщик не может автоматически определить, что указанные отношения фактически образуют одно отношение. Можно было бы использовать тип элемента экземпляра Java, но что делать, если у вас есть несколько членов одного и того же типа. И есть много сценариев, когда у вас есть два отдельных отношения. Пример:
OneToMany: User -> ForumThread (темы, созданные пользователем)
ManyToOne: ForumThread -> Пользователь (пользователь, закрывший ветку. Очевидно, не обязательно тот, кто начал ветку)
Это два независимых отношения и должны рассматриваться как таковые. Вы были бы весьма удивлены, если бы ваша постоянство только что создала двунаправленное отношение из этого только потому, что типы и множественность совпадают.
Также обратите внимание, что двунаправленные отношения не управляются автоматически каким-либо провайдером JPA, а это означает, что обратная сторона не обновляется/устанавливается автоматически в вашей объектной модели и, следовательно, не в БД. Вы должны сделать это сами. Кстати, во всех моих проектах двунаправленные отношения были занозой в заднице, и я думаю, что их желательно избегать.
14.03.2013