2016-04-23 11 views
0

Я использую спящий режим аннотации для создания моей таблицы базы данных:Как аннотация hibernate генерирует первичный ключ?

public class Item { 
    @Id @GeneratedValue 
    @Column(name="itemid", unique = true, nullable = false) 
    private long id; 
} 

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

enter image description here

И иногда, когда я восстановить мой проект, и вставить новый элемент в базу данных, он сгенерировал ItemID, который так же с ранее (например, 12, который уже находится в таблице), и из-за этого вставка завершится неудачно, потому что она не допускает дубликат ключа.

Кто-нибудь знает, почему это происходит?

+0

Зависит от базы данных. Что вы используете? –

+0

Я использую mysqlworkbench – user5516371

ответ

1

У меня была такая же проблема. Он был разрешен путем добавления ниже к моему компоненту, в вашем случае, к элементу класса.

@GeneratedValue(strategy=GenerationType.IDENTITY) 
+0

Это работает для меня! Спасибо ~ – user5516371

+0

Wc. Можете ли вы, пожалуйста, поддержать ответ. – LearningPhase

+0

проблем нет ~~~~~ – user5516371

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