ホームページ >データベース >mysql チュートリアル >Hibernate の MySQL INSERT ステートメントに予期しない自動インクリメント フィールドが含まれる問題を修正する方法は?
JPA アノテーションを使用した MySQL 自動インクリメント フィールドの注釈
JPA では、@GeneratedValue アノテーションを使用して、自動生成されたフィールドの値をどのように指定するかを指定します列が生成されるはずです。 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 生成戦略を明示的に指定する必要がある場合があります:
@Id @GeneratedValue(strategy=GenerationType.IDENTITY) private Long id;
以上がHibernate の MySQL INSERT ステートメントに予期しない自動インクリメント フィールドが含まれる問題を修正する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。