2009-04-30 14 views
1

プロパティの1つが列挙型であるオブジェクトを永続化する必要があります。この構造全体を1つのテーブルに保存する必要があります。このPersonクラスは、単一のテーブルに保存する必要がある場合 列挙型は、メインクラスがHibernate複合型保存

public Person { String name; Gender gender; }

ある可能性別

public enum Gender { MALE,FEMALE }

を定義し、どのようにHBMマッピングはすべきですか?

答えて

2

Javaや.Netを使用している場合には言及していませんが、私が見つけた解決策を提供しますので、必要に応じてJavaに変換できます。私はあなたがテーブルのフィールドの名前としてテーブルの値の名前を見ることができるようにテキストとして宣言することを可能にするジェネリック型の使用を示唆する投稿を見つけました。

Click Me!

Iは、列の長さを制限するためにわずかに鉱山を変更しました。

/// <summary> 
/// This class allows enums to be stored as a string in the database 
/// </summary> 
/// <typeparam name="T">The Enum Type</typeparam> 
public class EnumMapper<T> : EnumStringType 
{ 
    /// <summary> 
    /// The default constructor which defines that the maximum length of 
    /// an enum string column in the datbase is 30 characters. 
    /// </summary> 
    public EnumMapper() : base(typeof(T), 30) 
    { 
    } 
} 

これは数多くの点で優れています。列挙型の要素の順序を変更しても、それはまだ機能しており、db内の値が意味することがわかり、特別なクエリを簡単に書くことができます。 :)

関連する問題