私は Hibernate で足を濡らしていますが、解決策が見つからない問題に遭遇しました。
インターフェイスMyInterface
とインターフェイスを実装する列挙型があります。
class MyInterface {
void someMethod();
}
enum MyEnum implements MyInterface {
INST1, INST2;
@Override
public void someMethod() {
// ...
}
}
(他にもいくつかの実装がありMyInterface
ますが、それは問題ではないと思います。)
現在、クラス階層スキームごとに1つのテーブルを使用して、MyInterface
(そのうちの1つはどこにありますか)の実装をマップしようとしています。MyEnum
通常の列挙型をプロパティとしてマップする方法と、通常のサブクラスをマップする方法は知っていますが、コンボを行う方法はわかりません。次のように 2 つの手法を組み合わせる
-- DOES NOT WORK. --
<subclass name="package.MyEnum" extends="package.MyInterface">
<type name="org.hibernate.type.EnumType">
<param name="enumClass">package.MyEnum</param>
</type>
</subclass>
明らかにサポートされていません。
どんな助けでも感謝します。
(次のようなものを作成することで問題を回避できることに気づきました
class MyEnumWrapper implements MyInterface {
MyEnum inst;
public void someMethod() {
inst.someMethod();
}
}
その場合、通常のサブクラス マッピングで十分ですが、できればこれは避けたいと思います。ただし、カスタム UserTypes の実装に問題はありません。)