Как разбить на страницы список объектов (не сопоставленных доменных объектов), используя пользовательские нумерацию страниц с данными Spring - PullRequest
0 голосов
/ 03 мая 2018

У меня есть репозиторий с именем BananaRepositoryImpl, который содержит функцию, которая возвращает список BananaDTO ( устаревший код не может вернуть сопоставленную сущность (Banana.java), это ограничение, и я не могу изменить это поведение :()

public class BananaRepositoryImpl implements BananaRepository{
   @Autowired
   EntityManager em;

   public List<BananaDTO> findAllBananes(){
     //logic to get list of bananasDTO object types using Query query = em.createQuery(JPQL_QUERY_HERE);
   }
}

Зная, что объект BananaDTO является DTO для класса Banana.java, который выглядит следующим образом:

@Data
@Entity
public class Banana{
  private Long id;
  private Double price;
  private Double weight;
}

Что мне нужно сделать, это реализовать разбиение на страницы по методу findAllBananes(), чтобы я мог вернуть страницу с использованием данных Spring (или другого подхода).

1 Ответ

0 голосов
/ 03 мая 2018

Предполагая, что атрибуты BananaDTO являются подмножеством атрибутов Banana сущностей, вы можете использовать поддержку проекции на основе классов Spring Data JPA , т.е. вы просто добавляете Pageable как параметр вашего метода и вернуть Page<BananaDTO>:

interface BananaRepository extends CrudRepository<Banana, Long> {
    Page<BananaDTO> findAllBananes(Pageable page)
}
...