2017-01-19 7 views
1

В настоящее время у меня есть три таблицы: компания, группа, человек.Hibernate сущностей auto-increment id по столам, а не по таблице

Эти три таблицы связаны Компанией «один ко многим» с Группой и Группой, которые являются «один ко многим» с Лицом.

Во всех трех классах (Company.java, Group.java, Person.java), я закодирован автоинкрементируемым уникальным идентификатор так:

@Id 
@Column(name = "id") 
@GeneratedValue 
private int id; 

Тогда я инстанцирован все три класса в следующем порядке: Компания, Группа, Лицо.

После сохранения этих объектов в моей базе данных я заметил, что с идентификаторами в таблицах что-то не так.

Видимо, вместо увеличения идентификатора Компании в порядке 1, 2, 3, 4 и так далее; она увеличивается в 1, 4, 7, 10 ...

В этой же логике, идентификатор группы идет 2, 5, 8, 11 ...

Что я должен сделать, чтобы предотвратить счетчик @GeneratedValue разделяемых между тремя разными таблицами? Есть ли дополнительный или другой тег, который я должен использовать?

Спасибо.

ответ

4

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

@GeneratedValue(strategy = GenerationType.IDENTITY) 
+0

Спасибо! Это работало в MySql для меня, а затем и в posgresql. – 000000000000000000000

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