【问题标题】:Converting a JDO query to Objectify query将 JDO 查询转换为 Objectify 查询
【发布时间】:2012-04-30 17:22:48
【问题描述】:

我一直在考虑如何将此 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 查询,因此希望您能分享一些见解。

【问题讨论】:

    标签: google-app-engine jdo objectify


    【解决方案1】:

    在 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);
    

    【讨论】:

    • 有哪些有效类型可用于使用小于/大于“
    • 是 - 传入与您在 User 类上过滤的字段类型相同的对象。如果 Objectify 可以存储它,它可以通过它进行过滤。
    猜你喜欢
    • 2019-07-29
    • 2021-05-24
    • 2014-08-14
    • 2018-11-01
    • 2015-10-10
    • 2016-10-23
    • 2018-12-08
    • 2015-05-08
    • 1970-01-01
    相关资源
    最近更新 更多