休眠中的枚举
在 DAO 中有一个字段通常很有用,该字段的值来自 Java 枚举。一个典型的例子是登录 DAO,其中通常有一个字段将用户描述为“正常”或“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中的枚举类?如果不是,我表示枚举的模式是否足够好,或者我错过了什么?人们还使用哪些其他模式?