JPA Несколько FK из одинаковых таблиц - PullRequest
1 голос
/ 03 мая 2011

Имеют две таблицы с именами Employee и Order. Соотношения между таблицами Employee (1) - (*) Order. Также в Ордене есть два FK от Employee, названные EmployeeEncoder и EmployeeUpdater.

Я использую EclipseLink (JPA 2.0) под Netbeans 7.0, используя JDK 7.

Создание заказа в отношении зарегистрированного сотрудника не было проблемой. Когда дело доходит до обновления заказа и установки EmployeeUpdater, где EmployeeEncoder равен EmployeeEncoder, запись Employee дублируется.

Как я могу разрешить эту тему так, чтобы дублирование записей в EmployeeUpdater было невозможно?

Ответы [ 2 ]

1 голос
/ 03 мая 2011

Когда вы сохраняете новый ордер, он должен ссылаться на сотрудника из того же контекста персистентности (EntityManager).Попробуйте выполнить find () для Employee и установить для этого сотрудника Order.Вы также можете использовать merge () вместо persist.

0 голосов
/ 03 мая 2011

Может быть, вы устанавливаете объект Employee со значением первичного ключа null или 0 для Order. Таким образом, вы получили дублированных сотрудников. Возможно, вы захотите выполнить отладку с помощью IDE, чтобы увидеть значение.

Установить тип каскада для сотрудника как CascadeType.MERGE

...