MySQL の JPA アノテーションを使用した自動インクリメント フィールドについて
このシナリオでは、JPA アノテーションを使用して Operator オブジェクトを MySQL データベースに保存すると、次のエラーが発生します。問題です。この問題の根本原因は、自動インクリメント フィールドの設定内にあります。
MySQL AUTO_INCREMENT カラムを利用するには、IDENTITY 戦略を採用することが不可欠です。これは、次のアノテーションを使用して実現できます:
@Id @GeneratedValue(strategy=GenerationType.IDENTITY) private Long id;
このアノテーションにより、Hibernate がデータベースの自動インクリメント機能に基づいて適切な戦略を生成することが保証されます。
ただし、Hibernate はそうではないようです。 SQL 挿入ステートメントで id 列を出力します。これを解決するには、MySQL5InnoDBDialect や MySQL5Dialect などの MySQL ダイアレクトが Hibernate 構成で定義されていることを確認します。
さらに、テーブル DDL が正しいことを確認することが重要です。演算子テーブルは次の構造のようになります。
CREATE TABLE `operator` ( `id` INT(10) NOT NULL AUTO_INCREMENT, `username` VARCHAR(50) NOT NULL, `password` VARCHAR(50) NOT NULL, `active` INT(1) NOT NULL, PRIMARY KEY (`id`) );
これらのガイドラインに従うことで、自動インクリメント フィールドの注釈付けに関する問題は解決されるはずです。ただし、問題が解決しない場合は、ビルド ディレクトリを調べるか、異常な出来事がないかログを再検査するか、潜在的な不整合を特定するためにコードを再検査することを検討してください。
以上がJPA for MySQL の自動インクリメントフィールドに適切に注釈を付けるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。