Я бы хотел получить данные из таблицы, упорядоченной по приоритетному столбцу enum.Мы используем javaee 6, GF 3.1.
Наша сущность выглядит следующим образом
@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?
спасибо,
милан