Hibernate枚举映射

时间:2012-02-01 16:17:23

标签: java hibernate jpa enumeration

我有一个遗留数据库表,为简单起见,它看起来像:

  table address{
    varchar line1
    varchar line2
    varchar line3
    varchar(1) deliveryline
  }

deliveryline上有一个检查约束,保证其值为'1,'2', or '3'

这似乎是hibernate中枚举的一个很好的候选者。我有一个看起来像这个代表地址表的实体:

  public class Address{
    String line1;
    String line2;
    String line3;
    DeliveryLine deliveryLine;
  }

我通常在映射枚举时使用@Enumerated(EnumType.STRING),但该策略在此处不起作用。例如:

public enum DeliveryLine {  1,2,3 }   由于数据库(1,2,3)中的有效值不是有效的Java标识符,因此无法编译。

在hibernate中有一种直接强制映射的方法吗?

2 个答案:

答案 0 :(得分:4)

查看hibernate.org所述的GenericEnumUserType("灵活解决方案")

如果你正在使用Hibernate 4,你将不得不使用所讨论的修改版here

答案 1 :(得分:1)

由于您已锁定列类型的varchar,我认为您正在查看自定义UserType。例如:http://docs.jboss.org/hibernate/orm/4.0/manual/en-US/html/types.html#types-custom-ut