我需要预先将未实现接口的枚举映射到现有数据库,该数据库使用@Enumerated(EnumType.STRING)
将枚举存储在与所有者类相同的表中。休眠枚举映射
class A {
HasName name;
}
interface HasName {
String getName();
}
enum X implements HasName {
John, Mary;
public String getName() { return this.name(); }
}
enum Y implements HasName {
Tom, Ann;
public String getName() { return this.name(); }
}
如何在这种情况下处理映射?坚持数据库不会改变,因为所有的实现接口的枚举将有不同的值,但我不知道如何从数据库中检索对象(我是否需要一个自定义映射器,它会尝试实例化使用指定的枚举类枚举枚举?Hibernate本身支持这种功能吗?)。
在我的情况下,我不知道枚举的类将是什么。当实例化'A'时,Hibernate需要选择其中一个{X,Y}枚举。 – dm3 2009-10-20 11:47:43
根据需要调整示例UserType实现不应该很困难。例如,不是仅存储该值,也可以存储该类(例如,com.example.X.John或X.John,但是您需要从X到com.example.X的映射) – sfussenegger 2009-10-20 12:01:01
表示I需要一个自定义的映射器(没有看到你的链接到pastebin)。感谢你的回答。 – dm3 2009-10-20 12:19:42