这是方法本身,一切都太多了,因此我无法在流上正常编写它。请帮忙。
public List findAll(String nameFilter) {
Pattern pattern = Pattern.compile(nameFilter);
final int PAGE_SIZE = 1000;
List<Contact> contacts = new ArrayList<>();
int page = 0;
Slice<Contact> contactPage;
do {
contactPage = contactRepository.findAllBy(new PageRequest(page, PAGE_SIZE));
for (Contact contact : contactPage) {
if(!pattern.matcher(contact.getName()).matches()){
contacts.add(contact);
}
}
entityManager.clear();
page++;
} while (contactPage.hasNext());
return contacts;
}
老实说,我帮不了你太多,但有件事。我还在想:
选项编号 2
这是假设它
contactPage有一个接口Iterable,它可以自己拉下面的页面。如果我们正在谈论这个Slice,那么理论上它可以。但是我们失去了拉的机会entityManager.clear();。尝试运行此方法。如果是这样,我们会修复它。