各アイテムに割り当てられた int 値を持つ列挙があります。
public enum RankEnum {
NO_RANK(0),
FIRST_RANK(1),
...,
LAST_RANK(7);
private int rank;
RankEnum(int rank) { this.rank = rank; }
public int getRank() { return this.rank; }
}
整数値の意図は、さまざまな要素をランクに関して相互に比較しやすくすることでした (たとえば、e1.rank < e2.rank2)。だから私は次のようにエンティティにそれらをマッピングしました:
@Column(...)
@Enumerated(EnumType.ORDINAL)
private RankEnum rank;
残念ながら、たとえば、別のエンティティ x よりもランクが高いすべてのエンティティを検索するクエリを作成しようとすると、結果が正しくありません。
Select entity FROM Entity entity WHERE entity.rank > :rank
:rank は x.getRank(); にバインドされています。
したがって、質問は次のとおりです。この場合、jpaは実際に何を比較していますか? マッピングは序数であるため、値が整数として格納されていることを考慮して、これはうまくいくはずだと思いました。
前もって感謝します。