Как решить "Временный идентификатор не был заменен при коммите" с Cayenne - PullRequest
1 голос
/ 24 января 2011

При фиксации изменений в контексте Apache Cayenne я получаю исключение, подобное следующему:

org.apache.cayenne.CayenneRuntimeException: [v.3.0.1 Sep 06 2010 15:09:38]
Temporary ID hasn't been replaced on commit

Почему возникает это исключение?

1 Ответ

2 голосов
/ 24 января 2011

Вы пытаетесь зафиксировать объект, для которого Cayenne не знает, как создать постоянный идентификатор.Это, в свою очередь, обычно происходит, когда в базовой таблице не определен первичный ключ.

Для решения проблемы выполните одно из следующих действий.

  • Добавьте первичный ключ в базовую таблицу,либо суррогатный ключ (новый сгенерированный столбец идентификаторов), либо естественный ключ (комбинация существующих столбцов).
  • Установите свой собственный постоянный идентификатор для рассматриваемого объекта (объектов), используя метод PersistentObject.setObjectID().
...