在DAO中拥有一个字段,其值来自于Java枚举类型通常是非常有用的。一个典型的例子是登录DAO,在其中你通常会有一个字段用来描述用户是“NORMAL”还是“ADMIN”。在Hibernate中,我会使用以下两个对象来以(半)类型安全的方式表示这种关系:
class User {
String username;
String passwd;
UserType type;
}
class UserType {
private enum Type {ADMIN, NORMAL};
private String type;
//Setters/Getters for Hibernate
public void setType(String type);
public String getType();
//Setters/Getters for user
public void setUserType(UserType.Type t);
public UserType.Type getUserType();
public static UserType fromType(UserType.Type t);
}
这是可行的,但我发现UserType类太丑陋,并需要太多的官僚主义来存储一些值。理想情况下,Hibernate应该直接支持枚举字段,并创建一个额外的表来存储枚举值。
我的问题是:有没有办法在Hibernate中直接映射枚举类?如果没有,那么我表示枚举的模式是否足够好,或者我是否遗漏了什么?人们使用哪些其他模式?