在物化中计算实体的等级

时间:2012-08-01 11:20:51

标签: java entity ranking objectify

我的目标是根据作为字符串提供的某些属性计算实体的绝对等级。我使用的基本方法是发出查询,按降序对结果进行排序,并计算所有那些大于我的特定实体的属性值的结果。查询看起来像这样

int rank = o.query(Entity.class).order(String.format("-%s",attribute)).
           .filter(String.format("%s >", attribute), something).count();

然而,有些事情是我陷入困境的部分。据我理解客观化的概念,查询特定的实体成员是不可能的。我的下一步是使用(丑陋但快速的开发时间)if-construct来识别特定的实体成员,或者开始使用反射(稍微不那么丑,但是在开发时间方面很慢)。

无论哪种方式,我都会觉得我错过了一些明显和/或优雅的方式来完成这项任务。有什么建议? THX。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,你想要第一个实体,你想要剩余实体的数量?有两种方法可以做到这一点:

  1. 使用两个查询。在> =上使用limit(1)将返回第一个实体。首先启动它,但不要实现结果,以便它与第二个并行运行异步。
  2. 使用> =运行仅密钥查询,而不是count()。保留第一个键进行提取,并手动计算其余部分。仅键查询的成本与count()查询的成本相同(每个计数小的操作数),因为count()查询基本上与封面相同。
  3. 我可能会选择#2。无论哪种方式,我希望你的数量不是很大,否则你会通过很多的小型数据存储操作流失,你的应用程序将会很昂贵!