Spring JPAでEntityManagerを使用してオフセット値からの最大件数を取得する方法

Spring JPAでEntityManagerを使用してオフセット値からの最大件数を取得する方法

オフセット値(初期値=0)から最大件数までを取得する方法です。

setFirstResultメソッドの引数でオフセット値を設定します。0を基底値として1件目から取得していきます。

setMaxResultsの引数で一回のSQLで取得する件数(オフセット値からの)を指定します。

最後にgetResultListメソッドでSQL実行しメモリに保持します。

@RequestMapping(path = "/test/{offset}", method = RequestMethod.GET)
public ResponseEntity<?> test(@PathVariable Integer offset) {
CriteriaBuilder builder = entityManager.getCriteriaBuilder();
CriteriaQuery<Employee> criteriaQuery = builder.createQuery(Employee.class);
Root<Employee> q = criteriaQuery.from(Employee.class);
criteriaQuery.select(q);
TypedQuery<Employee> query = entityManager.createQuery(criteriaQuery);
List<Employee> employee = query.setFirstResult(offset).setMaxResults(1000).getResultList();
int currentOffset = employee.size();
employee.stream().forEach(e > log.info("{}", e));
return ResponseEntity.ok(Map.of("result", currentOffset));
}
// curl -X http://localhost:8080/test/0

view raw
RestController.java
hosted with ❤ by GitHub

スポンサーリンク
  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存
スポンサーリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA