Heim >Datenbank >MySQL-Tutorial >Wie kann die unerwartete Einbeziehung von Feldern mit automatischer Inkrementierung in MySQL INSERT-Anweisungen von Hibernate behoben werden?
Annotieren von MySQL-Autoinkrementierungsfeldern mit JPA-Annotationen
In JPA wird die @GeneratedValue-Annotation verwendet, um anzugeben, wie der Wert eines automatisch generierten Werts ist Spalte generiert werden soll. Für MySQL werden automatisch inkrementierende Spalten normalerweise mit der GenerationType.IDENTITY-Strategie zugeordnet. Wenn die generierte SQL jedoch das Feld für die automatische Inkrementierung enthält, kann es zu einer Nichtübereinstimmung der Konfiguration kommen.
Im gegebenen Fall verfügt das Operator-Objekt über das folgende Feld für die automatische Inkrementierung:
@Id @GeneratedValue private Long id;
Diese Annotation sollte die folgende SQL generieren:
insert into Operator (active, password, username) values (?, ?, ?)
Das bereitgestellte Protokoll zeigt jedoch, dass die SQL die ID enthält Spalte:
Hibernate: insert into Operator (active, password, username, id) values (?, ?, ?, ?)
Um dieses Problem zu beheben, stellen Sie sicher, dass die folgenden Schritte befolgt werden:
CREATE TABLE `operator` ( `id` INT(10) NOT NULL AUTO_INCREMENT, ...
Wenn das Problem weiterhin besteht, kann es erforderlich sein, die Strategie zur Identitätsgenerierung explizit anzugeben:
@Id @GeneratedValue(strategy=GenerationType.IDENTITY) private Long id;
Das obige ist der detaillierte Inhalt vonWie kann die unerwartete Einbeziehung von Feldern mit automatischer Inkrementierung in MySQL INSERT-Anweisungen von Hibernate behoben werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!