我有一张桌子DEAL和一张桌子DEAL_TYPE。我想映射以下代码:
public class Deal { DealType type; } public enum DealType { BASE("Base"), EXTRA("Extra"); }
问题在于数据已经存在于数据库中。而且我很难将类映射到数据库。
数据库看起来像这样:
TABLE DEAL { Long id; Long typeId; } TABLE DEAL_TYPE { Long id; String text; }
我知道我可以在交易类型之间使用简单的@OneToMany关系,但是我更喜欢使用枚举。这可能吗?
我几乎可以通过使用EnumType.ORDINAL类型来使其工作。但不幸的是,我的交易类型表中的ID不是连续的,并且不是从1开始。
有什么建议么?
hibernate对Enums来说很可怕。如果不是一个很好的ORM,这是一个奇怪的失败。解决它的“最简单”方法是将枚举声明为自定义hibernate类型。幸运的是,Hibernate编写了一个示例实现,您可以逐字逐字地将其放入应用程序中:
http://www.hibernate.org/265.html
他们甚至包括有关如何使用它的说明。每当我遇到需要持久枚举的情况时,我都会使用这种模式。