我将 JPARespository
用于我的所有 CRUD 操作。
最近想实现排序,所以我继续Pagable
。
问题是,我希望存储库方法返回 List
对象,我在我的服务层使用它们。
我怎样才能做到这一点,有没有办法将这些 Page
对象转换为 List
?
最佳答案
如果您在 jpa 存储库方法中使用 pageable,spring 将始终返回 Page 而不是 List。我建议您有一个服务方法,它调用存储库方法并将 Page 结果的内容提取到列表中。
所以如果你的存储库方法是这样的:
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface RecordRepository extends JpaRepository<Record, Integer>{
Page<Record> findAll(Pageable pageable);
}
那么你可以有一个服务类,它有一个调用存储库方法的方法
@Service
public class RecordService{
@Autowired
RecordRepository recordRepository;
public List<Record> findAll(PageRequest pageRequest){
Page<Record> recordsPage = recordRepository.findAll(pageRequest);
return recordsPage.getContent();
}
}
所以在您的调用类中,您可以直接使用该服务,而不是直接调用存储库。因此:
public class MyRecordImpl{
@Autowired
RecordService recordService;
public void doSomething(){
int page = 0; int pageSize = 5;
List<Record> recordList = recordService.findAll(new PageRequest(page, pageSize, new Sort(Sort.Direction.DESC, "recordId")));
//do other implementations here
}
}
关于java - 如何从 Spring Data REST 中的页面获取列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38809580/