Я бы хотел получить данные из таблицы, упорядоченной по столбцу приоритета, который является перечислением. Мы используем javaee 6, GF 3.1.JPQL Order by Enum
Наш объект выглядит следующим образом
@Entity
@Table(name="ITEMS")
@NamedQueries({
@NamedQuery(
name = "Item.findbyPriority",
query = "select i from Item i where ORDER BY i.priority DESC")
})
public class Item implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
Integer id;
String data inputFile;
@Enumerated(EnumType.ORDINAL)
Priority priority;
...
}
Приоритет определяется
public enum Priority {
HIGH,
NORMAL;
}
Однако Item.findbyPriority запросов сортирует по порядковому, и возвращает результат в неправильном порядке. Если я изменю класс приоритета на
public enum Priority {
NORMAL,
HIGH;
}
Это работает нормально. Но это не очень здорово. Что делать, если я добавляю новый приоритет или переупорядочиваю его?
Я попытался переопределить метод compareTo, но он является окончательным в классе Enum.
Что я могу сделать в этом случае? Как это можно сделать красивым способом?
Я знаю, что могу хранить приоритет как номер и т. Д., Но мне нужно синхронизировать сущности с Enum вручную, что не очень приятно. Возможно, методы @PrePersist, @PreUpldate и @PostLoad - это путь? Как будет выглядеть запрос jpql?
спасибо,
милан
спасибо за ваш ответ, ну, что вы говорите, в основном переупорядочивание возвратило результаты, я прав? – udik
Точно, вы правы. –