Преобразовать заказ Spring в JPA Order from Pageable - PullRequest
0 голосов
/ 19 февраля 2019

Наш веб-интерфейс предназначен для отправки объекта Pageable с Spring's Order, который содержит имя атрибута.

Образец объекта:

@Entity
@Table
public class Foo {

   private String userName;

   @Embedded
   private Bar bar;
}

@Embeddable
public class Bar {
   private String value;
}

Мы получаем pageable с заказом в репозитории и анализируем заказ JPA из этогоPageable объект, подобный этому:

pageable.getSort().get().forEach(springOrder -> 
        jpaOrders.add(getBuilder().asc(root.get(springOrder .getProperty())))
        );

Нам нужно сделать это таким образом, потому что мы строим запросы через критерии api.

Когда мы получаем в атрибут репозитория Foo, все в порядке, например, "имя_пользователя».Но когда мы получаем атрибут встраиваемой сущности, например, «bar.value», мы получаем исключение

Невозможно найти атрибут с заданным именем [bar.value] для этого ManagedType

Можете ли вы сказать мне, как создать объект Order в JPA из атрибута, который определяет атрибут встраиваемых объектов?Спасибо за совет

Ответы [ 2 ]

0 голосов
/ 16 апреля 2019

Вы пробовали использовать org.springframework.data.jpa.repository.query.QueryUtils#toOrders?

0 голосов
/ 20 февраля 2019

Для этих путей к свойствам вам придется создавать объединения и применять Order, используя правильный псевдоним объединения и последнюю часть пути к свойству.

Для более подробной информации, я бы рекомендовал изучить код Spring Data JPA.Найдите все ссылки на класс Order и начните читать код.

...