为了简化起见,我有一个旧的数据库表,看起来像:
table address{
varchar line1
varchar line2
varchar line3
varchar(1) deliveryline
}
在
deliveryline
上有一个检查约束,以确保其值为'1,'2', or '3'
。这似乎是休眠中枚举的一个不错的选择。我有一个看起来像这样的实体,代表了地址表:
public class Address{
String line1;
String line2;
String line3;
DeliveryLine deliveryLine;
}
通常在映射枚举时使用
@Enumerated(EnumType.STRING)
,但是该策略在这里不起作用。例如:公共枚举DeliveryLine {
1,2,3
}
由于数据库(1,2,3)中的有效值不是有效的Java标识符,因此无法编译。
有没有一种简单的方法可以在休眠状态下强制此映射?
最佳答案
查看hibernate.org中描述的GenericEnumUserType
(在“灵活的解决方案”下)
如果您使用的是Hibernate 4,则必须使用修改过的版本,如here所述