ホームページ >データベース >mysql チュートリアル >@Column(columnDefinition) と @Enumerated(EnumType.STRING) を使用して Hibernate で列挙型を文字列として保持する方法

@Column(columnDefinition) と @Enumerated(EnumType.STRING) を使用して Hibernate で列挙型を文字列として保持する方法

Susan Sarandon
Susan Sarandonオリジナル
2024-10-30 04:47:02298ブラウズ

How to Persist Enums as Strings in Hibernate with @Column(columnDefinition) and @Enumerated(EnumType.STRING)?

列挙型としての Hibernate Enum の永続化

Hibernate エンティティで列挙型を定義する場合、永続化メカニズムがデータベース列のデータ型と一致していることを確認することが重要です。あなたの場合、データベース列 "gender" は、値 'male' と ' Female' を持つ列挙型として定義されています。

発生している問題は、で予期されるデータ型の不一致が原因である可能性があります。 Hibernate とデータベース列の実際のデータ型。デフォルトでは、Hibernate は列挙値が整数として保持されることを期待していますが、データベース列は列挙型として定義されています。

この不一致を解決するには、 @Column(columnDefinition) アノテーション。このアノテーションは、列の作成に使用される DDL (データ定義言語) を定義します。あなたの場合、列定義を次のように指定できます:

@Column(columnDefinition = "enum('male','female')")

さらに、列挙型フィールドに @Enumerated(EnumType.STRING) アノテーションを付けて、列挙型を文字列値として保持する必要があることを示す必要があります。

この更新されたコード スニペットは問題を修正するはずです:

@Column(columnDefinition = "enum('male','female')")
@Enumerated(EnumType.STRING)
private Gender gender;

列定義と列挙型を明示的に指定することで、Hibernate がデータ型と一致する文字列として列挙型を保持するように強制します。データベース列の。これにより、発生していたエラーが回避され、列挙型データが正しく永続化されます。

以上が@Column(columnDefinition) と @Enumerated(EnumType.STRING) を使用して Hibernate で列挙型を文字列として保持する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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