Можно ли удалить порядок из критериев гибернации?


Если у меня есть аннотация @OrderBy("someProperty") на объекте, а затем использовать критерий для добавления предложения ORDER BY, например:

criteria.addOrder(Order.asc("id"));

Результирующий SQL будет выполнять порядок следующим образом:

ORDER BY someProperty, id asc

Можно ли изменить порядок этих двух или удалить некоторый порядок свойств? Я не могу удалить аннотацию @OrderBy и использую Hibernate для Java.

2 7

2 ответа:

Критерий не имеет методов для удаления порядка ни критерия Класс Order очень ограничен, можно использовать только имена свойств, и он генерирует стандартный и переносимый SQL. Аннотация OrderBy является порядком SQL, так как javadoc утверждает: OrderBy Это означает, что вы можете использовать там любой sql (даже эксклюзивный от вашего поставщика базы данных). Посмотрите на эту статью: сортировка коллекций в Hibernate с помощью SQL в @OrderBy

добавление SQL фрагментация в ваш доменный класс не обязательно самая элегантная вещь в мире, но это может быть самая прагматичная вещь.

Возможно, можно удалить определенный порядок с помощью критериев.iterateorderings () итератор, но я не уверен, как он работает с аннотациями.