Я работаю над веб-проектом с пружинной загрузкой и весенними данными jpa. позвольте мне вкратце рассказать о проблеме.
для фильтрации по каждому столбцу базы данных в нашей форме на лицевой стороне, мы создали такой параметр: ["colName", содержит "colValue"] этообщий способ для всех таблиц и форм. когда к приложению Spring загружается запрос, мы выполняем поиск с помощью Sepecification и Regex and Pagination (Page). в этом случае у нас есть проблема.
Как правило, мы хотим выполнить следующие шаги: 1. Использовать спецификацию Speacification и фильтр действий для All 2. Затем использовать Page findAll (Specification spec);и передайте spec для метода findAll. 3. для последнего шага Page finAllByColName (Stirng colName, Pageable pageable);и мы хотим передать предыдущую страницу в этом методе.
, которую мы не знаем, есть ли способ использовать вложенные Pageing в весенних данных, таких как коды, как показано ниже ??
//Repository
Page<HseHTlvRequests> findAll(Specification specification, Pageable pageable);
@Query(value = "select * from HSE_H_TLV_REQUESTS h where h.COD_BUSUN_TLVRQ=:codBusunTlvrq",nativeQuery = true)
Page<HseHTlvRequests> findAllByDesGasTlvrq(@Param("codBusunTlvrq") String codBusunTlvrq,Pageable pageable);
}
//Service
Page<HseHTlvRequests> gridLoadByDesGas(String desGas,String search, Pageable pageable, String orderBy, String direction) throws ResourceNotFoundException;
//ServiceImpl
@Override
public Page<HseHTlvRequests> gridLoadByDesGas(String desGas, String search, Pageable pageable, String orderBy, String direction) throws ResourceNotFoundException {
try {
if (search == null) {
return hseHTlvRequestsRepository.findAllByDesGasTlvrq(desGas, PageRequest.of(pageable.getPageNumber(), pageable.getPageSize(), orderBy != null ? new Sort(Sort.Direction.valueOf(direction), orderBy) : Sort.unsorted()));
} else {
SearchSpec<HseHTlvRequests> searchQuery = MiniParser.spec(search, HseHTlvRequests.class);
Page<HseHTlvRequests> page = hseHTlvRequestsRepository.findAll(searchQuery, PageRequest.of(pageable.getPageNumber(), pageable.getPageSize(), orderBy != null ? new Sort(Sort.Direction.valueOf(direction), orderBy) : Sort.unsorted()));
return hseHTlvRequestsRepository.findAllByDesGasTlvrq(desGas,page);
}
} catch (NoResultException | UnsupportedEncodingException e) {
systemLog.error(e.getMessage());
return null;
}
}