我用 Hibernate 弄湿了我的脚,我遇到了一个我找不到任何解决方案的问题。
我有一个接口MyInterface
和一个实现该接口的枚举:
class MyInterface {
void someMethod();
}
enum MyEnum implements MyInterface {
INST1, INST2;
@Override
public void someMethod() {
// ...
}
}
(我还有一些其他的实现,MyInterface
但我认为这并不重要。)
现在我正在尝试使用每个类层次结构方案一个表来映射MyInterface
(其中MyEnum
之一)的实现。我知道如何将普通枚举映射为属性,也知道如何映射普通子类,但我不知道如何进行组合。混合两种技术如下
-- 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 没有问题。)