Как преобразовать существующую схему БД без первичного ключа AUTO_INCREMENT в ключ с AUTO_INCREMENT? - PullRequest
0 голосов
/ 03 октября 2011

У меня есть приложение, которое было разработано с базой данных HSQL, и проблема в том, что мы переносим его на MySQL с помощью JPA / Hibernate.Проблема в том, что старая схема не имеет первичного ключа AUTO_INCREMENT: как я могу использовать JPA, чтобы использовать такую ​​функцию возрастающего ключа без изменения схемы?

Существует ли механизм, который заставляет hibernate брать последнийINSERTED_ID + 1 для следующей вставки?

большое спасибо,

1 Ответ

0 голосов
/ 03 октября 2011

Самое безопасное - использовать mysql AUTO_INCREMENT при создании таблицы, и если вы хотите начать со значения AUTO_INCREMENT, отличного от 1, вы можете установить это значение с помощью CREATE TABLE или ALTER TABLE, например:

mysql> ALTER TABLE tbl AUTO_INCREMENT = 100;

Если вы не хотите добавлять эту небольшую модификацию в схему при переходе на mysql. Вы можете использовать генератор идентификатора гибернации increment, который создается путем подсчета максимального значения первичного ключа при запуске.

Действительно важно !!! Инкремент небезопасен для использования в кластере по сравнению с mysql AUTO_INCREMENT.

Генератор приращений

IdentifierGenerator, который возвращает длинную, построенную путем подсчета от максимального значения первичного ключа при запуске. Не безопасно для использования в Кластер!

Параметры отображения поддерживаются, но обычно не нужны: таблицы, столбцы. (Параметр tables указывает разделенный запятыми список таблиц имена.)

приращение

генерирует идентификаторы типа long, short или int, которые являются уникальными, только когда никакой другой процесс не вставка данных в ту же таблицу. Не используйте в кластере.

...