Один ко многим заказ с чехлом в спящий режим весной - PullRequest
3 голосов
/ 10 марта 2019

У меня есть запрос, который упорядочивает объекты на 2 даты:

@Query(value = "from Order order by CASE WHEN created > updated THEN created ELSE updated END desc")

Могу ли я сделать то же самое с @OneToMany в аннотации @OrderBy?

@OneToMany(cascade = CascadeType.ALL ,mappedBy = "order", fetch = FetchType.EAGER)
@OrderBy(...)
private List<Dish> dishes = new ArrayList<>();

Кроме того, это может потребовать меньше времени и производительности по сравнению с принятием всех заказов, а затем их циклическим поиском и поиском блюд для каждого с запросом?

Ответы [ 2 ]

0 голосов
/ 10 марта 2019

Попробуйте использовать org.hibernate.annotations.OrderBy вместо javax.persistence.OrderBy

JavaDoc org.hibernate.annotations.OrderBy утверждает:

Заказ коллекции с использованием SQL-порядка (не HQL-порядка).

Отличается от javax.persistence.OrderBy тем, что ожидает SQL фрагмент, JPA OrderBy ожидает допустимый фрагмент заказа по JPQL.

Это значит:

  • Вы можете использовать функции SQL
  • вам нужно использовать имена столбцов SQL вместо имен полей Java
0 голосов
/ 10 марта 2019

Hibernate поддерживает аннотацию @OrderBy, которую вы можете добавить к атрибуту отношения, как показано в следующем фрагменте кода.

@OrderBy(value = "CASE DESC")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...