Как вернуть пользовательский класс из PagingAndSortingRepository в Spring Boot - PullRequest
0 голосов
/ 28 мая 2019

У меня есть модель, которая выглядит так:

@Entity
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Sale {
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id;

  @OneToOne(targetEntity = User.class)
  private User customer;

  @OneToOne(targetEntity = Product.class)
  private Product product;
}

И у меня есть хранилище подкачки и сортировки, вот так:

public interface SaleRepository extends PagingAndSortingRepository<Sale, Long> {}

Но я бы хотел использовать метод findAll для репозитория, чтобы возвращать пользовательский класс с определенными полями (вместо всех данных вложенных объектов), при этом сохраняя возможности подкачки и сортировки. Список объектов, которые я хотел бы вернуть, будет содержать что-то вроде:

  • SaleID
  • CUSTOMERID
  • CUSTOMERNAME
  • PRODUCTID
  • ProductName
  • prouctPrice

Но я не уверен, как на самом деле это сделать.

Мой метод контроллера принимает параметры сортировки и подкачки и затем делает это:

Page<Sale> saleList = saleRepository.findAll(pageable);

return saleList;

1 Ответ

2 голосов
/ 28 мая 2019

Вы можете создать либо интерфейс, либо DTO и использовать его в результате поиска, объявленного в вашем хранилище:

Page<YourDTO> findAllAsDtos(Pageable pageable);

Подробнее о проекциях читайте здесь: https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#projections

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...