Google App Engine Java:子对象上的查询

Google App Engine Java:子对象上的查询,java,google-app-engine,google-cloud-datastore,Java,Google App Engine,Google Cloud Datastore,这个问题和Google应用程序引擎Java有关 我有两个目标,员工地址。 每个员工都有一个地址列表init,还有一个字符串状态current/retired/left/fired 现在我想得到一份我目前所有休斯顿员工的名单 Class Employee { @Persistent(mappedBy="employee") List<Address> addresses; String status; } Class Address { @Persis

这个问题和Google应用程序引擎Java有关

我有两个目标,员工地址。 每个员工都有一个地址列表init,还有一个字符串状态current/retired/left/fired

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

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

Class Address {
    @Persistent 
    private Employee employee;
    String address1;
    String city;
    String zip;
}
Class员工{
@持久性(mappedBy=“employee”)
列出地址;
字符串状态;
}
班级地址{
@持久的
私人雇员;
字符串地址1;
字符串城市;
拉链;
}
在我的db类中,如何告诉我的查询执行我需要的操作

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

List<Employee> empList = (List<Employee>) query.executeWithArray(paramValues.toArray());
Query Query=pm.newQuery(Employee.class,whereClause.toString());
List empList=(List)query.executeWithArray(paramValues.toArray());
当我将我的状态参数设置为current时,它会给我一个当前员工的列表,我如何将“Houston”的条件添加到我的查询中,以便我不必自己进行筛选


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

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

我也这么做,但在这段时间内,结果集大小增加了,现在我得到了35秒限制的例外情况。试图进行分页以避免出现这种情况,但很快就遇到了一些页面由于页面上的筛选器而无法显示结果的问题。@oceandrive在这种情况下,您需要修改数据模型-例如,将状态标志复制到所有员工的地址实体。ya也有同样的想法,但感觉数据重复太多。但我觉得我可能不得不采取这种方法。谢谢你的回复。