私は春のブートでPaginationで記録されたユーザーによってジョブを検索したいです。春のブートでログインしたユーザーによってジョブを検索
私は、すべてのユーザーのすべてのジョブを取得すると、それはとても
public List<Job> findAll(Pageable pageable) {
List<Job> jobs = new ArrayList<>();
for (Job job : paginatedJobRepository.findAll(pageable)) {
jobs.add(job);
}
return jobs;
}
私はページネーションでログインしているユーザーによってすべてのジョブを取得しようとすると、それが正常に動作しないように正常に動作します。私はそれをそうするようにする
public List<Job> findJobByCompany(Pageable pageable) {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
User user = userService.findByUsername(authentication.getName());
Company userCompany = companyService.findCompany(user);
List<Job> jobs = new ArrayList<>();
for (Job job : paginatedJobRepository.findAll(pageable)) {
if (job.getCompany().getId() == userCompany.getId()) {
jobs.add(job);
}
}
return jobs;
}
問題は、ユーザーがページネーションを持つすべてのデータを取得しないことです。ページネーションは正しいですが、我々はあなたが、クエリでカスタムメソッドを定義することができるだけでページ付けページ5と6
正常に動作しませんでしょうか?例外はありますか?あなたの問題は何ですか? – Patrick
@Patrickは答えに感謝します。投稿を更新しました –
結合を試してみてください。 1つのクエリでこれを達成できますが、代わりに3つの異なるクエリを実行します。また、最後の "findAll"の代わりに、findByCompany_idというメソッドを記述します(あなたのJobエンティティはCompanyエンティティとの関係を持っていると仮定します)。 –