0
我想使用Hibernate持久化枚舉數組。值得注意的是,如果可能的話,我寧願不使用集合。到目前爲止我在網上找到的答案是存儲集合,而不是數組。如何在休眠中存儲枚舉數組
我收到一個運行時錯誤,抱怨缺少@OrderColumn或@IndexColumn。我不想按字母順序排列數組。我希望它以相同的順序返回。
枚舉的字面上儘可能簡單,但你可以要求,但Enum.name()不是按字母順序,所以似乎沒有一個自然的「Order」列。
@Embeddable
public enum SudokuPossibleValueState {
UNDEFINED, UNKNOWN, IMPOSSIBLE, POSSIBLE, COMMITTED, AS_PUBLISHED;
public String toString() {
return name().toLowerCase();
}
}
根據定義,我使用的實際位置的陣列中,以指示我正在考慮的數量,並且所述枚舉定義評價該數目的狀態。例如,一個典型的陣列可能是......
[0] = UNDEFINED,
[1] = UNDEFINED,
[2] = POSSIBLE,
[3] = POSSIBLE,
[4] = UNKNOWN,
[5] = UNKNOWN,
[6] = UNKNOWN,
[7] = IMPOSSIBLE,
[8] = IMPOSSIBLE,
[9] = IMPOSSIBLE.
但我遇到的挑戰是,所有的,我可以在網上找到的例子,Hibernate文檔,似乎只是解決您身在何處的情況使用Java集合;這不是我想要做的。
@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「enum」不是「@ Embeddable」。這是一種基本類型。 –
謝謝。這很有幫助;刪除它至少改變了我得到的錯誤。最終,我剛剛投入,並進行了下文所述的破解。 –