使用JPA註解來註解MySQL自動增量欄位
在JPA中,@GenerateValue註解用於指定自動產生的值應產生列。對於 MySQL,自動增量列通常使用 GenerationType.IDENTITY 策略進行對應。但是,如果產生的 SQL 包含自增字段,則可能存在配置不符的情況。
在給定的情況下,Operator 物件具有以下自增欄位:
@Id @GeneratedValue private Long id;
此註解應產生下列SQL:
insert into Operator (active, password, username) values (?, ?, ?)
但是,提供的日誌顯示SQL 包含id列:
Hibernate: insert into Operator (active, password, username, id) values (?, ?, ?, ?)
要解決此問題,請確保遵循以下步驟:
CREATE TABLE `operator` ( `id` INT(10) NOT NULL AUTO_INCREMENT, ...
如果問題仍然存在,可能需要明確指定身分產生策略:
@Id @GeneratedValue(strategy=GenerationType.IDENTITY) private Long id;
以上是如何修復 Hibernate 在 MySQL INSERT 語句中意外包含自增欄位的問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!