0

我对数据操作感到震惊,我想按 Ref 字段对查询结果进行排序。

假设我有以下数据对象。

  1. EmployeeDO {Long id, String name, Ref refCompany}

  2. CompanyDO {Long id, String name}

现在我想查询按公司名称排列的员工。

我试过查询

Query<EmployeeDO> query = ofy().load().type(EmployeeDO.class).order("refCompany");

显然这没有用公司名称对结果进行排序,但这也编译成功。

请建议是否可以通过这种方式进行此类排序,或者可以尝试其他一些解决方法?

4

1 回答 1

0

如果您@Index refCompany,您可以通过 refCompany 订购,但它不会按公司名称排序 - 它会按键索引(如果您不使用 @Parent,只需一个 id 顺序)。

有两种“通常”的选择:

  • 将数据加载到 ram 中并在那里排序。这就是 RDBMS 在内部所做的事情。GAE 不支持连接并不完全正确。只是您是查询计划者。

  • 对 companyName 进行非规范化和预索引。放入@Index companyNameEmployeeDO。如果您的魔术排序表现不佳(例如,员工太多),这就是您对 RDBMS 所做的事情。

于 2013-06-30T15:53:36.620 回答