我擁有的是一個很大的(如數十萬)ID列表。我想通過JPA查詢從具有此ID的對象中獲取一些值。JPA查詢:什麼是通過大量可能值進行選擇的正確方法?
選項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()
請求。
什麼是做這種類型的事情的正確方法?
想到的
只是一個評論。被警告,'IN(id1,id2,id3,...,idN)'語法可能有限制。例如。在Oracle上,這樣的列表中有1000個人工智能限制。 – 2013-02-08 14:21:25