2012-04-19 21 views
0

我一直在思考如何隱蔽這個JDO查詢物化查詢,但這樣我只能找到listByProperty功能,我可以不適用這樣的過濾器是這樣的:轉換一個JDO查詢物化查詢

Date expiry = new Date(new Date().getTime() - MAX_TIME); 
Query query = pm.newQuery(User.class, "someProperty == null && " + 
      "lastModified < dateParam"); 
query.declareParameters("java.util.Date dateParam"); 
query.setOrdering("lastModified asc, created asc"); 
query.setRange(0, 2); 
List<User> users = (List<User>) query.execute(expiry); 

代號爲listByProperty:

public List<T> listByProperty(String propName, Object propValue) 
{ 
    Query<T> q = ofy().query(clazz); 
    q.filter(propName, propValue); 
    return asList(q.fetch()); 
} 

我不熟悉JDO查詢,所以希望你可以分享一些見解。

回答

4

在Objectify3:

ofy.query(User.class) 
    .filter("someProperty", null) 
    .filter("lastModified <", expiry) 
    .order("lastModified") 
    .order("created") 
    .limit(2); 

在Objectify4:

ofy.load().type(User.class) 
    .filter("someProperty", null) 
    .filter("lastModified <", expiry) 
    .order("lastModified") 
    .order("created") 
    .limit(2); 
+0

什麼是有效的類型,可以使用的每種不超過/大於 「<」 操作符來過濾,如果我使用的java.util。日期是否會過濾「日期」屬性小於「過期」的對象? – xybrek 2012-04-20 00:42:58

+0

是 - 在User類中傳入與您要過濾的字段相同類型的對象。如果Objectify可以存儲它,它可以通過它進行過濾。 – stickfigure 2012-04-25 18:28:02