hibernate не генерирует автоматическое ограничение приращения в таблице MySQL - PullRequest
3 голосов
/ 16 марта 2012

Я искал проблему на разных форумах и пробовал разные решения, но все еще не могу найти правильный ответ для своей проблемы.

Я использую аннотации hibernate4 для отображения своих сущностей.все работает нормально, но только ключ автоматического увеличения не обнаруживается при создании таблиц с использованием Hibernate в MySQL.

У меня есть следующий код:

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(unique = true, nullable = false)
private int responseId;

Я также попытался

@Id
@GenericGenerator(name="generator", strategy="increment")
@GeneratedValue(generator="generator")
private int responseId;

С hibernate он работает абсолютно нормально, id автоматически присваивается строке, но в таблице mysql он не имеет ограничения AutoIncrement.Я должен пометить поле как AI вручную.Это становится проблематичным, когда я вручную вставляю запись для тестирования или использую операторы jdbc для таблицы.Пожалуйста, дайте мне знать, что мне не хватает в конфигурации, которая не позволяет Hibernate наложить AutoIncrement Contraint на соответствующий столбец.

1 Ответ

5 голосов
/ 16 марта 2012

Используйте генератор IDENTITY и используйте атрибут columnDefinition для @Column, чтобы указать тип столбца:

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(columnDefinition = "MEDIUMINT NOT NULL AUTO_INCREMENT")
private int responseId;
...