Hibernateを使用して列挙型の配列を永続化しようとしています。可能であれば、私はむしろコレクションを使用しないことに注意することが重要です。今まで私がオンラインで見つけた答えは、配列ではなくコレクションを格納するためのものです。hibernateで列挙型の配列を格納する方法
@OrderColumnまたは@IndexColumnが見つからないと不平を言ってランタイムエラーが発生します。配列をアルファベット順に並べる必要はありません。私はそれが同じ順序で返されることを望みます。
enumは、あなたが求めるほどシンプルですが、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」は「@埋め込み可能」ではありません。それは基本的なタイプです。 –
ありがとうございます。それは役に立ちました。それを削除することは、少なくとも私が得ていたエラーを変更しました。最終的に、私はちょうど与えて、ハックを以下で説明しました。 –