【问题标题】:Google App Engine Java: Query on a child objectGoogle App Engine Java:查询子对象
【发布时间】:2011-03-07 18:04:50
【问题描述】:

问题与 Google 应用引擎 Java 有关。

我有两个对象 Employee,Address。 每个员工都有一个地址列表 init 并且还具有当前/退休/离开/解雇的字符串状态。

现在我想获得一份我目前在休斯顿的所有员工的名单。

Class Employee {
    @Persistent(mappedBy="employee")
    List<Address> addresses;
    String status;
}

Class Address {
    @Persistent 
    private Employee employee;
    String address1;
    String city;
    String zip;
}

在我的 db 类上,如何告诉我的查询执行我需要的操作。

Query query = pm.newQuery(Employee.class, whereClause.toString());

List<Employee> empList = (List<Employee>) query.executeWithArray(paramValues.toArray());

当我将我的状态参数设置为当前时,它会给我一个当前员工的列表,我如何将“休斯顿”的条件添加到我的查询中,这样我就不必自己进行过滤了。

我觉得我错过了什么。感谢您的帮助。

【问题讨论】:

    标签: java google-app-engine google-cloud-datastore


    【解决方案1】:

    这需要加入,因此在 App Engine 上的查询中是不可能的。您最好的选择是查询休斯顿的所有地址实体,然后获取他们的员工记录并按状态过滤(在内存中)。

    【讨论】:

    • 我也在做同样的事情,但在此期间结果集大小已经增长,现在我得到了 35 秒限制异常。试图进行分页以避免它,但很快就遇到了由于页面上的过滤器而导致某些页面没有结果的问题。
    • @oceandrive 在这种情况下,您需要修改数据模型 - 例如,将状态标志复制到所有员工的地址实体。
    • 是的,有同样的想法,但感觉数据重复太多。但我觉得我可能不得不采取这种方法。感谢您的回复。
    猜你喜欢
    • 1970-01-01
    • 2011-07-05
    • 1970-01-01
    • 2015-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-03
    相关资源
    最近更新 更多