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”。这是一种基本类型。 –
谢谢。这很有帮助;删除它至少改变了我得到的错误。最终,我刚刚投入,并进行了下文所述的破解。 –