2013-03-10 3 views
0

Я хочу спросить о некотором совете, почему мой <generator class="identity" /> сгенерировать идентификатор в таблице не так, как в последнем вставленном + 1, но, например, последний идентификатор вставки равен 5 и когда сохранить запись, то новый идентификатор быть, например, 7, так что значение идентификатора 6 пропускаютсяКак генератор идентификатора силы для класса «indentity» для увеличения для последнего вставленного идентификатора в SQL

(мне нужно использовать идентичности не приращением класса из-за преимущества этого класса «идентичность» для моей базы данных MySQL)

потому что в моем случае мне нужно такое же значение ID для первичного ключа и внешнего ключа, должно быть равно, но в этом случае я получил первичный ключ 7 и внешнего ключа будет генерировать также, но не как увеличивается на последней ID,

как класс имеет Hibernate отображения, с этим <generator class="identity" /> Что я должен использовать таким образом, чтобы получить как инкрементируется ID с новой записью по «идентичности»?

+0

Внешние ключи должны быть установлены в значение первичного ключа. Они не должны генерироваться независимо, и первичный ключ, безусловно, не должен зависеть от значения внешнего ключа. Это очень странно. –

ответ

2

Вы должны создать таблицу с первичным ключом, используя «AUTO_INCREMENT», такие как:

CREATE TABLE person ( id BIGINT NOT NULL AUTO_INCREMENT, name CHAR(30) NOT NULL, PRIMARY KEY (id) )

Тогда ваш GenerationType.IDENTITY должен делать эту работу.

+0

hm Я проверяю мои таблицы, оба имеют эти auto_increment, но я заметил, что когда я использую этот GenerationType.IDENTITY, мой последний идентификатор, например, 7, и новый Id будет генерировать, например, 9 (так что не увеличивайте и не пропускайте значение ID 8), тогда i удалите этот идентификатор и снова сохраните новый идентификатор, так что новый идентификатор будет равен 10, поэтому приращение работает, но не продолжает форматировать последний идентификатор вставки (из 7) – ViliDuarte1

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