NonUniqueObjectException, переходящий на стратегию генератора hilo - PullRequest
0 голосов
/ 24 февраля 2010

У меня есть база данных с существующими данными, где ранее я использовал AUTO_INCREMENT на БД для генерации PK.

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

public class BaseEntity implements Serializable  {

@Id
@GeneratedValue(generator="generator")
@GenericGenerator(
        name="generator", strategy="hilo")
private Integer id;

Мне трудно найти документацию по синтаксису @GenericGenerator, поэтому я не уверен, правильно ли я ее реализовал. Насколько я понимаю, этот генератор генерирует PK для сущности, предшествующей выполнению INSERT, что исключает необходимость запроса после вставки для обнаружения pk.

Однако это приводит к исключению org.hibernate.NonUniqueObjectException при попытке сделать INSERT - предположительно, потому что значения, которые hibernate пытается использовать для PK, уже приняты.

Правильно ли мое понимание здесь, и - если это так - как настроить Hibernate для чтения соответствующих таблиц при запуске и выбора нижних границ PK?

1 Ответ

0 голосов
/ 24 февраля 2010

Кажется, вы используете tablehilo. В любом случае, код Generator очень важен для устранения неполадок. Поэтому, пожалуйста, предоставьте соответствующий фрагмент.

Кроме того, я настоятельно рекомендую вам взглянуть на этот подход здесь , если вы еще не сделали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...