2016-03-01 24 views
-1

當我有一個javax.persistence.Query,我期待從List我總是檢查,以確保List大小超過1返回任何值之前。 例如在javax.persistence.Query上調用getResultList()是否執行查詢兩次?

Query q = em.createQuery(sql); 

if(q.getResultList().size()<1) 
     { 
      return new ArrayList(); 
     } 
     else 
     { 
      return q.getResultList(); 
     } 

我想知道是否當我檢查的大小和當我返回結果如果查詢正在執行兩次。

+0

@MarkRotteveel:同意,刪除我的評論。 – kosa

+1

代碼中的q是什麼? – ParkerHalo

回答

2

getResultList()執行查詢,就像docs說的那樣。

而是執行此操作:

List results = q.getResultList(); 
if (results.size() == 0) { 
    return Collections.emptyList(); 
} else { 
    return results; 
} 

當然,如果這是一個TypedQuery,你應該增加仿製藥的部分。返回一個不包含結果記錄的查詢中不可修改的空列表是一個好習慣。

0

如果q.getResultList();是實際的查詢,那麼是的。

前相比,我將它存儲在一個變量List storeHere = q.getResultList();

然後比較變量,而不是命令。

+0

這只是一個存儲變量的例子,因爲我們並不知道'q'是。 – Deckerz