在 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 中的枚举类?如果不是,我表示枚举的模式是否足够好,或者我错过了什么?人们还使用哪些其他模式?