Es ist oft nützlich, ein Feld in einem DAO zu haben, dessen Wert aus einer Java-Aufzählung stammt. Ein typisches Beispiel ist ein Anmelde-DAO, in dem Sie normalerweise ein Feld haben, das den Benutzer als "NORMAL" oder "ADMIN" kennzeichnet. Im Ruhezustand würde ich die folgenden 2 Objekte verwenden, um diese Beziehung (halb-) typsicher darzustellen:
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);
}
Dies funktioniert, aber ich finde die UserType-Klasse ungly und erfordert zu viel Bürokratie, um nur ein paar Werte zu speichern. Im Idealfall sollte der Ruhezustand Aufzählungsfelder direkt unterstützen und eine zusätzliche Tabelle zum Speichern der Aufzählungswerte erstellen.
Meine Frage ist: Gibt es eine Möglichkeit, eine Aufzählungsklasse im Ruhezustand direkt zuzuordnen? Wenn nicht, ist mein Muster für die Darstellung von Aufzählungen gut genug oder fehlt mir etwas? Welche anderen Muster verwenden Menschen?
Aus der Hibernate-Dokumentation: http://www.hibernate.org/272.html
Sie können für jede Ihrer Aufzählungen ein neues typedef erstellen und auf die typedefs im Eigenschaftstag verweisen.
Beispielzuordnung - Inline-
<type>
TagBeispiel Mapping - using
<typedef>
quelle
enumClass
anstelle von lautetenumClassName
.