За да използвате MySQL AUTO_INCREMENT колона, трябва да използвате IDENTITY стратегия:
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
Което ще получите, когато използвате AUTO с MySQL:
@Id @GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
Което всъщност е еквивалентно на
@Id @GeneratedValue
private Long id;
С други думи, вашето картографиране трябва да работи. Но Hibernate трябва да пропусне id колона в SQL инструкцията за вмъкване и не е така. Някъде трябва да има някакво несъответствие.
Вие посочихте ли MySQL диалект във вашата конфигурация на Hibernate (вероятно MySQL5InnoDBDialect или MySQL5Dialect в зависимост от двигателя, който използвате)?
Освен това, кой създаде таблицата? Можете ли да покажете съответния DDL?
Последващи действия: Не мога да възпроизве проблема ти. Използване на вашия код обект и вашите DDL, Hibernate генерира следния (очакван) SQL с MySQL:
insert
into
Operator
(active, password, username)
values
(?, ?, ?)
Имайте предвид, че id колоната отсъства в горното изявление, както се очаква.
За да обобщим, вашият код, дефиницията на таблицата и диалектът са правилни и последователни, трябва да работи. Ако не е за вас, може би нещо не е синхронизирано (направете чиста компилация, проверете двукратно директорията за компилиране и т.н.) или нещо друго просто не е наред (проверете регистрационните файлове за нещо подозрително).
Относно диалекта, единственият разлика между MySQL5Dialect или MySQL5InnoDBDialect е, че по-късното добавя ENGINE=InnoDB към обектите на таблицата при генериране на DDL. Използването на едното или другото не променя генерирания SQL.