Часто полезно иметь в 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 должен поддерживать поля enum напрямую и создавать дополнительную таблицу для хранения значений перечисления.
Мой вопрос: есть ли способ напрямую отобразить класс перечисления в Hibernate? Если нет, достаточно ли хорош мой шаблон для представления перечислений или я что-то упустил? Какие еще шаблоны используют люди?