在DAO中具有一个其值来自Java枚举的字段通常很有用。一个典型的示例是登录DAO,您通常在其中具有一个将用户表征为“ NORMAL”或“ ADMIN”的字段。在Hibernate中,我将使用以下2个对象以(半)类型安全的方式表示此关系:
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中映射枚举类?如果不是,我表示枚举的模式是否足够好?人们还会使用其他哪些模式?