ホームページ >データベース >mysql チュートリアル >MySQL で多態性抽象スーパークラスで @GeneratedValue GenerationType.TABLE を使用するときに発生する「Unknown columns 'sequence_name' in 'where quote'」エラーを解決する方法

MySQL で多態性抽象スーパークラスで @GeneratedValue GenerationType.TABLE を使用するときに発生する「Unknown columns 'sequence_name' in 'where quote'」エラーを解決する方法

Barbara Streisand
Barbara Streisandオリジナル
2024-11-11 18:36:02907ブラウズ

How to Resolve

@GeneratedValue MySQL 上の多態性抽象スーパークラス

Hibernate と MySQL を利用する Spring MVC アプリケーションでは、抽象スーパークラス BaseEntity のサブクラスを永続化しようとすることが観察されています。 、「テーブル 'docbd.hibernate_sequences' が存在しません」エラーが発生します。このエラーは、@GeneratedValue に GenerationType.TABLE が使用されていることと、MySQL 内でシーケンスがサポートされていないことが原因で発生します。

エンティティ ID を管理する抽象スーパークラスのため、GenerationType.IDENTITY の使用は実行できず、GenerationType.SEQUENCE はサポートされていない場合、この問題をどのように解決するかという問題が生じます。提供されているコード スニペットは、抽象スーパークラス (BaseEntity)、サブクラスの例 (CCD)、ドメイン固有言語 (DDL)、およびデータ アクセス オブジェクト (DAO) 内の JPQL コードを示しています。

使用される継承戦略は InheritanceType です。 .TABLE_PER_CLASS、サブクラスごとに個別のテーブルを示します。 MySQL がシーケンスを使用できないことを考慮すると、GenerationType.TABLE を使用する代替案は必然的に hibernate_sequences テーブルの欠如につながります。

投稿者は、交換可能なManyToOne関係の必要性を挙げて、@MappedSuperClassの使用は実行可能な選択肢ではないと主張しています。 。たとえば、AccessLog には Actor_entity と target_entity が含まれており、どちらも BaseEntity から継承しています。このシナリオでは、@MappedSuperClass を使用すると、AccessLog が BaseEntity を見つけられないことを示すエラーが発生します。

問題を解決するために、提案に従って hibernate_sequences テーブルが作成されました。ただし、新しいエラーが発生しました: 「'where 句' に不明な列 'sequence_name' があります。」 このエラーは、Hibernate によって開始された SQL クエリを指します: 「select sequence_next_hi_value from hibernate_sequences where sequence_name = 'BaseEntity' for update.」

この特定のエラーに対処するには、投稿者は、 hibernate_sequences テーブル。

以上がMySQL で多態性抽象スーパークラスで @GeneratedValue GenerationType.TABLE を使用するときに発生する「Unknown columns 'sequence_name' in 'where quote'」エラーを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。