我使用openJPA作爲實現,並且我面臨以下問題。JPA重新執行具有不同參數的相同命名查詢
在我們的服務中,我們使用namedQuery在一個範圍內選擇值,所以這樣的事情:
query = "select xxx from xxx where xxx in (:param)"
此服務/查詢由另一個進程負責建築/提供這個叫參數值。有時 - 出於不好的原因 - 這個過程給了我們一個長度大於DB2授權的最大長度的列表。
所以我想知道如果我們可以實現mecanism自動將這個參數分成幾個vlaue列表,執行每個內部列表這個namedQuery,然後在返回之前彙總結果。
現在的主要問題是:我可以重複使用多次構建的TypedQuery來重新執行相同的請求,但使用不同的參數值嗎?
代碼示例(對於這個例子,不是一個真正的,也不存在的代碼):
TypedQuery<MyClass> query = em.createNamedQuery("myQueryName", MyClass.class);
foreach (...) {
query.setParameter(...);
res = query.getResultList();
// Query re-executed and results are different ?
}
它是解決這類問題的正確途徑,如果不是有沒有更好的(在性能項)如何做到這一點?
你可以簡單地把'query'放在while循環中。 – sp00m
當然,當前代碼在循環中獲取查詢,我只是問這個問題,知道它是否可能和更好(或不) – kij
是否沒有其他方式做這個查詢?你能否以更簡單的選擇標準進行聯合?如果我吹起了這個SQL限制,我將會發出警鐘。 –