2014-01-22 2 views
0

При попытке сохранить новую строку в таблице я получаю дублируемую ошибку id и не удается сохранить данные. Он находится в нашей сценической среде, поэтому в настоящее время у меня нет доступа к журналам, хотя я пытаюсь получить его временно, чтобы понять это. У меня есть только сообщение о ошибке до сих пор:Повторяющиеся идентификаторы при использовании TableGenerator

Duplicate entry '2219193' for key 'PRIMARY' 

Мы используем таблицу последовательности и я использую TableGenerator аннотированный как так:

@Entity 
@TableGenerator(name="AUDITTRAIL_GEN", table="sequence", pkColumnName = "sequence_name", 
     valueColumnName = "sequence_value", pkColumnValue="seq_audittrailid", allocationSize=50) 
public class FtpAuditTrail { 
    ... 
} 

у меня нет каких-либо специальных настроек, включающиеся в спящий режим. Буквально единственными свойствами, которые я устанавливаю, является URL-адрес имени пользователя, пароля, драйвера и репозитория.

Существует еще один сервер (с другим приложением, чем у меня), который периодически обновляет одну и ту же базу данных и добавляет строки в таблицу.

Я использую Java 1.6.0_65, MySQL 5.5.11 и последнюю версию спящего режима на момент написания этой статьи, 4.2.2.Final.

Отредактировано: Я подтвердил с владельцем другого приложения, что они обновляют таблицу последовательностей до нового значения, а затем используют новое значение как идентификатор своей новой строки в общей таблице. Не позволяет ли TableGenerator использовать значение в таблице для использования?

+0

Вы проверили, существует ли в базе данных запись «2219193»? – JCalcines

+0

Используете ли вы несколько постоянных единиц? TableGenerator должен работать только в том случае, если есть только один – Guillaume

+0

@JCalcines - да, это так. двойная ошибка входа является законной. – barclay

ответ

0

Другие (и ранее давно установленные) приложения, создающие записи в общих таблицах, ожидают, что значение, сохраненное в таблице последовательности, будет последним используемым значением. Поэтому мне нужен собственный генератор идентификаторов, чтобы сделать то же самое. Если у спящего режима нет генератора id, который делает то, что я хочу. Но ответ здесь (https://stackoverflow.com/a/10648572/187423) предполагает, что вы должны расширить TableGenerator в своем собственном классе, чтобы это произошло.

Смежные вопросы