从可迭代对象转换为页面对象
Convert from Iterable to Page Object
我有一个方法 returns 在 couchbase 存储库中找到的所有文档,结果是一个 Page<MyObject>
对象,这很好:
...
import org.springframework.data.domain.Page;
Page<MyObject> myObjects = myRepo
.findAll(new PageRequest(page == null ? 0 : page, size));
...
我还有另一种方法 returns a Iterable<MyObject>
如下所示。该方法运行良好,从 couchbase 检索到的结果正常。
...
Bucket myBucket = myRepo.getCouchbaseOperations().getCouchbaseBucket();
PrefixQuery field = SearchQuery.prefix(searchParameter);
SearchQueryResult searchQueryResult = myBucket
.query(new SearchQuery("text-search", field)
.fields("name").explain());
List <String> idList = new ArrayList<>();
for (SearchQueryRow searchQueryRow : searchQueryResult.hits()) {
idList.add(searchQueryRow.id());
}
Iterable<MyObject> myObjects = myRepo.findAll(idList);
...
我的问题是:如何将 Iterable<MyObject> myObjects
转换为 Page<MyObject> myObjects
?
我终于找到了解决方法,我将答案贴出来以防将来对任何人有所帮助。我通过以下方式实现了它:
Iterable<MyObject> myObjects = myRepo.findAll(idList);
List<MyObject> myObjectsList = IteratorUtils.toList(myObjects.iterator());
Page<MyObject> myObjectsPage = new PageImpl<MyObject>(
myObjectsList,
new PageRequest(page, size),
myObjectsList.size());
我有一个方法 returns 在 couchbase 存储库中找到的所有文档,结果是一个 Page<MyObject>
对象,这很好:
...
import org.springframework.data.domain.Page;
Page<MyObject> myObjects = myRepo
.findAll(new PageRequest(page == null ? 0 : page, size));
...
我还有另一种方法 returns a Iterable<MyObject>
如下所示。该方法运行良好,从 couchbase 检索到的结果正常。
...
Bucket myBucket = myRepo.getCouchbaseOperations().getCouchbaseBucket();
PrefixQuery field = SearchQuery.prefix(searchParameter);
SearchQueryResult searchQueryResult = myBucket
.query(new SearchQuery("text-search", field)
.fields("name").explain());
List <String> idList = new ArrayList<>();
for (SearchQueryRow searchQueryRow : searchQueryResult.hits()) {
idList.add(searchQueryRow.id());
}
Iterable<MyObject> myObjects = myRepo.findAll(idList);
...
我的问题是:如何将 Iterable<MyObject> myObjects
转换为 Page<MyObject> myObjects
?
我终于找到了解决方法,我将答案贴出来以防将来对任何人有所帮助。我通过以下方式实现了它:
Iterable<MyObject> myObjects = myRepo.findAll(idList);
List<MyObject> myObjectsList = IteratorUtils.toList(myObjects.iterator());
Page<MyObject> myObjectsPage = new PageImpl<MyObject>(
myObjectsList,
new PageRequest(page, size),
myObjectsList.size());