Ich versuche, ein Array von Enum zu erhalten, mit Hibernate. Es ist wichtig zu beachten, dass ich, wenn es möglich ist, lieber keine Sammlung verwenden möchte. Die Antworten, die ich bisher online gefunden habe, dienen zum Speichern von Sammlungen, nicht von Arrays.So speichern Sie ein Array von Enum im Ruhezustand
Ich bekomme einen Laufzeitfehler, der sich über das Fehlen einer @OrderColumn oder @IndexColumn beschwert. Ich möchte nicht, dass das Array alphabetisch sortiert wird. Ich möchte, dass es in der gleichen Reihenfolge zurückgegeben wird.
Die enums sind buchstäblich so einfach, wie Sie fragen könnten, aber die Enum.name() sind nicht in alphabetischer Reihenfolge, so dass es keine natürliche "Order" -Spalte zu sein scheint.
@Embeddable
public enum SudokuPossibleValueState {
UNDEFINED, UNKNOWN, IMPOSSIBLE, POSSIBLE, COMMITTED, AS_PUBLISHED;
public String toString() {
return name().toLowerCase();
}
}
Per Definition verwende ich die aktuelle Position in der Anordnung, die Anzahl, um anzuzeigen, dass ich unter Berücksichtigung bin und die ENUM definiert den Zustand der Auswertung für diese Nummer. Zum Beispiel könnte ein typisches Array ...
[0] = UNDEFINED,
[1] = UNDEFINED,
[2] = POSSIBLE,
[3] = POSSIBLE,
[4] = UNKNOWN,
[5] = UNKNOWN,
[6] = UNKNOWN,
[7] = IMPOSSIBLE,
[8] = IMPOSSIBLE,
[9] = IMPOSSIBLE.
Aber die Herausforderung, die mir begegnet ist, ist, dass alle Beispiele, die ich online finden kann, und die Hibernate Dokumentation, scheinen nur die Situation ansprechen, wo Sie sind Verwenden einer Java-Sammlung; was ich nicht versuche zu tun.
@Entity
@Table(name = "SudokuPossibleValues")
public class SudokuPossibleValuesModel {
public static final int NUMBER_OF_POSSIBLE_VALUES_PLUS_ONE = 10;
@Id
@GeneratedValue
private long possibleValuesID;
@ElementCollection
@Enumerated(EnumType.STRING)
private SudokuPossibleValueState stateValues[] = new SudokuPossibleValueState[NUMBER_OF_POSSIBLE_VALUES_PLUS_ONE];
...
}
FWIW Ein "Enum" ist nicht "@ Embeddable". Es ist ein Grundtyp. –
Danke. Das war hilfreich; Es entfernte zumindest die Fehler, die ich bekam. Schließlich gab ich einfach nach und tat den unten beschriebenen Hack. –