@GeneratedValue MySQL 上の多態性抽象スーパークラス
Hibernate と MySQL を使用する Spring MVC アプリケーションで抽象スーパークラスと @GeneratedValue を操作する場合、データベースの特定の要件と制限を考慮することが不可欠です。 「テーブル 'docbd.hibernate_sequences' は存在しません」というエラーは、シーケンスをネイティブにサポートしていない MySQL で GenerationType.TABLE が使用されている場合によく発生します。
問題の概要
この問題は、GenerationType.TABLE がシーケンス値を保存するために「hibernate_sequences」というテーブルを必要とするために発生します。 MySQL にはこのテーブルがないため、Hibernate はテーブルを作成しようとしますが、エラーが発生します。さらに、抽象スーパークラスで ID を管理する場合は、GenerationType.IDENTITY を使用することはできません。
ソリューション
GenerationType.TABLE と GenerationType.IDENTITY には制限がありますが、両方の問題に対処するソリューション。シーケンス テーブルや AUTO_INCREMENT に依存する代わりに、エンティティを保存する前に次の ID を手動で取得して設定すると、問題が解決します。このアプローチには次の手順が含まれます。
このアプローチでは、効果的に新しいデータが生成されます。シーケンスや AUTO_INCREMENT に依存しない ID。これにより、柔軟性が向上し、MySQL に存在しないシーケンスの問題が確実に解決されます。
以上がHibernate と MySQL を使用して Spring MVC アプリケーションで抽象スーパークラスの ID を生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。