私が持っているのは、ID の大きな (数十万のような) リストです。JPA クエリを使用して、この ID を持つオブジェクトからいくつかの値を取得したいと考えています。
オプション 1 - IN 句を使用する
List<Long> ids = /* ... */
entityManager.createQuery(
"SELECT v.lat, v.lon FROM Vehicle v WHERE v.id IN (:ids)",
Long[].class)
.setParameter("ids", ids)
.getResultList();
IN
条項の内容に制限があるかもしれません。
オプション 2 - 各 ID を個別にクエリする
List<Long> ids = /* ... */
for (Long id : ids) {
entityManager.createQuery(
"SELECT v.lat, v.lon FROM Vehicle v WHERE v.id = :id",
Long[].class)
.setParameter("id", id)
.getSingleResult();
}
リクエストを行っているように見えるので、それは遅すぎids.size()
ます。
この種のことを行う適切な方法は何ですか?