使用Hibernate持久化原始Java Enum

cod*_*aig 6 java enums hibernate jpa

我有一个包含枚举属性的实体.该属性可以是我的代码库中的任何一种类型的枚举:

public enum AutomobileType {
   CAR, TRUCK, MOTORCYCLE
}

public enum BoatType {
   ROW_BOAT,YACHT,SHIP
}

@Entity
public class FooBar {

  @Enumerated(value=EnumType.ORDINAL)
  private Enum enumValue;

  public void setEnumValue(Enum value) { ... }
  public Enum getEnumValue() { ... }
}
Run Code Online (Sandbox Code Playgroud)

这失败了,有一个例外,"错误的数据类型:对于输入字符串:"[B @ f0569a".我改变了FooBar将属性存储为有效的整数,但这不是我需要的.我需要实际的枚举.任何建议关于如何使这个工作,以便枚举可以作为int持久化,但后来拉出正确的枚举类型?

duf*_*ymo 3

您需要为 Enum定义自定义 UserType 。