私が正しくあなたを理解していれば、のような列挙型のために:
public enum Color { RED, GREEN, BLUE; }
あなたは、データベース内のそれぞれの可能な列挙値の1を3真/偽の列を持っているでしょう。その後、たとえば、赤と青を含むEnumSet
にマップする必要があります。その場合は
RED GREEN BLUE
true false true
、私が知っている唯一の方法は、のorg.hibernate.usertype.UserType
の独自の実装を書くことです。 Hibernateのサイトで利用可能ないくつかの例があり、例えばhereのようにかなり簡単な作業です。
を編集してください:私はちょっとしたことがやや複雑になるはずです。
- 使用
org.hibernate.usertype.ParameterizedType
と列挙型クラスによって、ユーザタイプがパラメータ化します:あなたはあなたのアプリケーション内のすべての可能なEnumSet
のための1つのHibernate型のマッピングを持っているしたい場合は、次の操作を行う必要があります。
- enumクラスの値に応じて、読み書きする列の数と列を決定します。
EnumSet
が使用されるたびにタイプをインスタンス化します。
- 複数のセットを1つのテーブルにマッピングする可能性と、新しい列挙値を追加することが既存のタイプの動作にどのように影響するかを考慮してください。
これは、1日の仕事には簡単に足りるかもしれませんが、かなりやりがいのあるようです。あなたがここからそれを理解することを願っています。
ありがとう...私は手作業でやっていましたが、おそらく唯一の解決策です。 –