У меня есть перечисление со значениями int, присвоенными каждому элементу.JPA: Сравнение (> =) порядкового enum в запросе
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; }
}
intetion целочисленных значений было сделать проще сравнивать различные элементы друг с другом, в отношении их ранга (например e1.rank < e2.rank2). Поэтому я сопоставляюсь их в своей сущности, как это:
@Column(...)
@Enumerated(EnumType.ORDINAL)
private RankEnum rank;
К сожалению, когда я пытаюсь создать запрос для поиска, например, все объектов с более высоким рангом, чем другая сущность х результатов не является правильным.
Select entity FROM Entity entity WHERE entity.rank > :rank
: ранг связан с x.getRank();
Таким образом, вопрос был бы следующим: что такое jpa, фактически сравнивающее в этом случае? Поскольку отображение является порядковым, я думал, что это должно работать, поскольку значения хранятся как целые числа.
Заранее спасибо.
Ну, вы посмотрели, какой SQL генерируется? –
... где entity0_.RANK>? – Alex
Хорошо, а как выглядит RANK в базе данных? Вы говорите, что результат «неправильный» - что происходит, по сравнению с тем, что вы ожидаете? –