2011-07-19 25 views
0

這個JDOQL與下面的SQL相同嗎?如何在JDOQL中實現SQL IN查詢?

Query query = pm.newQuery(Vote.class, ":p.contains(personId)"); 

if (startDate != null) { 
    query.setFilter("personId == listOfIds && createdDate > startDateParam");  
    query.declareParameters("java.util.List listOfIds, java.util.Date startDateParam");  
} 
else { 
    query.setFilter("personId == :listOfIds"); 

} 
query.setOrdering("createdDate desc"); 

List<Vote> list = (List<Vote>) query.execute(listOfIds, startDate); 

SELECT * FROM VOTE 
WHERE persionID IN (id1, id2..) 
AND createdDate > '2011-07-11' 
ORDER BY createdDate desc; 

回答

1

是。請記住,「in」查詢會轉換爲多個底層數據存儲區查詢,因此效率不高 - 如果您可以避免這些查詢,請執行此操作。

相關問題