[解決済み] Hibernateの列挙
2023-06-19 22:51:51
質問
DAOにおいて、その値がJavaの列挙に由来するフィールドを持つことはしばしば有用です。典型的な例はログインDAOで、通常、ユーザーを"NORMAL" または"ADMIN" として特徴付けるフィールドを持っています。Hibernateでは、次の2つのオブジェクトを使用して、このリレーションシップを(半)タイプセーフな方法で表現します。
class User {
String username;
String passwd;
UserType type;
}
class UserType {
private enum Type {ADMIN, NORMAL};
private String type;
//Setters/Getters for Hibernate
public void setType(String type);
public String getType();
//Setters/Getters for user
public void setUserType(UserType.Type t);
public UserType.Type getUserType();
public static UserType fromType(UserType.Type t);
}
これは動作しますが、UserTypeクラスは醜く、いくつかの値を格納するためだけにあまりにも多くの官僚主義を必要とすることがわかります。理想的には、Hibernateは列挙フィールドを直接サポートし、列挙値を格納するための余分なテーブルを作成することです。
私の質問は、Hibernateで列挙クラスを直接マッピングする方法はあるかということです。そうでない場合、列挙を表現するための私のパターンは十分ですか、それとも何か見逃していますか? 人々はどのような他のパターンを使用するのでしょうか?
どのように解決するのですか?
hibernateやJPAのアノテーションを使用する。
class User {
@Enumerated(EnumType.STRING)
UserType type
}
UserTypeはjava 5の標準的なenumに過ぎません。
これはアノテーションだけに限ったことではないと思うのですが、実はhbmファイルでこれを行う方法を私は知りません。それは非常にバージョンに依存するかもしれません、私は推測ですが、hibernate 3.2+ が必要であることは間違いないでしょう。
編集: hbmで可能ですが、少し面倒です、これを見てください。 フォーラムスレッド
関連
-
executeQuery()でデータ操作文が発行できない。解決方法
-
ApplicationContextの起動エラーです。条件レポートを表示するには、アプリケーションを'de'で再実行します。
-
が 'X-Frame-Options' を 'sameorigin' に設定したため、フレーム内に存在する。
-
java マイクロソフト払い戻し予期せぬサーバーからのファイルの終了
-
FindBugの使用概要
-
アノテーション「@Retention」の役割
-
ecplise プロンプトが表示されます。"選択したものは起動できません。" "最近の起動はありません。"
-
org.xml.sax.SAXParseExceptionのエラー解決方法
-
[解決済み] Hibernateの「オブジェクトは保存されていないトランジェントインスタンスを参照しています - フラッシュする前にトランジェントインスタンスを保存してください」エラーの修正方法
-
[解決済み] HibernateがMultipleBagFetchExceptionをスローする - 複数のバッグを同時にフェッチできない
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
mvn' は、内部または外部のコマンド、操作可能なプログラムまたはバッチファイルとして認識されません。
-
XMLファイル操作時のjava.util.NoSuchElementExceptionを解決する方法。
-
Eclipse の問題 アクセス制限。タイプ 'jfxrt' はAPI解決されていません。
-
Jsoup-Crawlingの動作
-
Uncaught ReferenceError: は定義されていません。
-
Javaがテキストファイルを読み込む
-
java send https request prompt java.security.cert.について。
-
maven レポート エラー 解決不可能な親POM
-
Javaがリソースリークに遭遇した:'input'が閉じない 解決方法
-
ecplise プロンプトが表示されます。"選択したものは起動できません。" "最近の起動はありません。"