Grails обновляет ссылки - PullRequest
       7

Grails обновляет ссылки

0 голосов
/ 13 января 2012

Как я могу добавить Объект в отношение и сохранить его?

, если я сделаю что-то подобное

registrationInstance.addToActionType(id:id)

Я получу исключение

Unique index or primary key violation: "PRIMARY_KEY_E7 ON PUBLIC.ACTION_TYPE_REGISTRATIONS(ACTION_TYPE_ID, REGISTRATION_ID)"; SQL statement: insert into action_type_registrations (action_type_id, registration_id) values (?, ?) [23001-147]

РЕДАКТИРОВАТЬ:

Если я пишу

registrationInstance.addToActionType(ActionType.get(id))

Я получаю ту же ошибку, но она сохраняется - так как я могу избавиться от этой ошибки?

EDIT2:

Если я пытаюсь удалить объект:

registrationInstance.removeFromActionType(ActionType.get(id))

Я получаю следующую ошибку (иногда не всегда)

Eindeutiger Index oder Primarschlüssel verletzt: "PRIMARY_KEY_E7 ON PUBLIC.ACTION_TYPE_REGISTRATIONS(ACTION_TYPE_ID, REGISTRATION_ID)" Unique index or primary key violation: "PRIMARY_KEY_E7 ON PUBLIC.ACTION_TYPE_REGISTRATIONS(ACTION_TYPE_ID, REGISTRATION_ID)"; SQL statement: update action_type_registrations set action_type_id=? where registration_id=? and action_type_idx=? [23001-147]

Ответы [ 2 ]

1 голос
/ 13 января 2012

Похоже, он не обнаруживает, что экземпляр уже находится в коллекции.Реализуйте разумные методы hashCode и equals для ActionType, чтобы Hibernate мог определить, что он уже есть, и не пытаться создать дублирующую запись в таблице ACTION_TYPE_REGISTRATIONS соединения.

1 голос
/ 13 января 2012

Вы должны добавить сам объект в отношение:

registrationInstance.addToActionType(ActionType.load(id))
registrationInstance.save()
...