将JDO查询转换为Objectify查询

时间:2012-04-19 08:03:52

标签: google-app-engine jdo objectify

我一直在考虑如何将这个JDO查询转换为Objectify查询,但我只能找到listByProperty函数,我无法应用这样的过滤器:

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查询,所以希望您能分享一些见解。

1 个答案:

答案 0 :(得分: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);