すべてのCRUD操作にJPARespository
を使用しています。 最近並べ替えを実装したかったので、Pagable
を先に進めました。春のデータでリストを取得する方法REST
問題は、私はリポジトリメソッドがList
オブジェクトを返すようにしたい、私はそれらを私のサービス層で使う。
どうすればいいですか?Page
オブジェクトをList
に変換する方法はありますか?
すべてのCRUD操作にJPARespository
を使用しています。 最近並べ替えを実装したかったので、Pagable
を先に進めました。春のデータでリストを取得する方法REST
問題は、私はリポジトリメソッドがList
オブジェクトを返すようにしたい、私はそれらを私のサービス層で使う。
どうすればいいですか?Page
オブジェクトをList
に変換する方法はありますか?
jpaリポジトリメソッドでpageableを使用すると、springは常に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
}
}
私は、これはそれがグーグルにポップして、すべてのページのすべての情報がリストに変換する必要があるときに、人々がより多くの回答が必要な場合があります最初のオプションである、私は遅れていますが、知っている...
一つaproximationができ:
xRepository.findAll(new PageRequest(0, Integer.MAX_VALUE)).getContent();
ここでの問題は、春は1000年に最大サイズを設定しますので、あなたは、最大1000個の要素のリストを取得しようとしているということです。
diferentページインデックスを見つける複数のことができやって、その後のgetContent()でリストに結果を追加する他の方法:
Page<T> pageData = xRepository.findAll(new PageRequest(0, 20));
List<T> finalList = pageData.getContent();
while(!pageData.isLast()){
pageData = xRepository.findAll(pageData.nextPageable());
List<T> listData = pageData.getContent();
//append listData into finalList
}
しかし '.getContent()'すべてからすべてを返しませんページ、またはその単一のページのデータだけ? – mmcrae
@mmcrae .getContent()は単一のページのデータを返します – Sohlowmawn
すべてのページからすべてを取得してリストに変換する方法は? – gavinSong