It is often useful to have a field in a DAO whose value comes from a Java enumeration. A typical example is a login DAO where you usually have a field that characterises the user as "NORMAL" or "ADMIN". In Hibernate, I would use the following 2 objects to represent this relationship in a (semi-)typesafe way:
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);
}
This works, but I find the UserType class ungly and requiring too much bureaucracy just to store a couple of values. Ideally, Hibernate should support enum fields directly and would create an extra table to store the enumeration values.
My question is: Is there any way to directly map an enumeration class in Hibernate? If not, is my pattern for representing enumerations good enough or am I missing something? What other patterns do people use?
 
     
     
     
    