我需要預先將未實現接口的枚舉映射到現有數據庫,該數據庫使用@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