一連のブール列にマップするとよいと思ったEnumSetがあります。これにより、SQLツールを使用した検査が容易になり、使用可能な列挙値の変更に対する耐性も高まります。ただし、このためにすべてのゲッターとセッターを手書きしたくはありません。
ある種の休止状態のメタデータを使用してこのオブジェクトを一連のプロパティに分割する巧妙なソリューションを持っている人はいますか?
ありがとう!
一連のブール列にマップするとよいと思ったEnumSetがあります。これにより、SQLツールを使用した検査が容易になり、使用可能な列挙値の変更に対する耐性も高まります。ただし、このためにすべてのゲッターとセッターを手書きしたくはありません。
ある種の休止状態のメタデータを使用してこのオブジェクトを一連のプロパティに分割する巧妙なソリューションを持っている人はいますか?
ありがとう!
私があなたを正しく理解していれば、次のような列挙型について:
public enum Color { RED, GREEN, BLUE; }
データベースには、可能な列挙値ごとに 1 つずつ、3 つの true/false 列があります。次にEnumSet
、たとえば RED と BLUE を含むものを次の場所にマップする必要があります。
RED GREEN BLUE
true false true
その場合、私が知っている唯一の方法は、 の独自の実装を作成することですorg.hibernate.usertype.UserType
。これは非常に簡単な作業で、いくつかの例が Hibernate サイトや、たとえばhereにあります。
編集:物事はもう少し複雑でなければならないことに気付きました。アプリケーションで可能なすべてに対して 1 つの Hibernate タイプ マッピングをEnumSet
使用する場合は、次の手順を実行する必要があります。
org.hibernate.usertype.ParameterizedType
列挙型クラスによってユーザー型をパラメーター化できるようにします。EnumSet
anが使用されるたびに型をインスタンス化します。これは簡単に 1 日かかる作業になりますが、かなり実行可能のようです。ここから理解していただければ幸いです。