我的目标是根据作为字符串提供的某些属性计算实体的绝对等级。我使用的基本方法是发出查询,按降序对结果进行排序,并计算所有那些大于我的特定实体的属性值的结果。查询看起来像这样
int rank = o.query(Entity.class).order(String.format("-%s",attribute)).
.filter(String.format("%s >", attribute), something).count();
然而,有些事情是我陷入困境的部分。据我理解客观化的概念,查询特定的实体成员是不可能的。我的下一步是使用(丑陋但快速的开发时间)if-construct来识别特定的实体成员,或者开始使用反射(稍微不那么丑,但是在开发时间方面很慢)。
无论哪种方式,我都会觉得我错过了一些明显和/或优雅的方式来完成这项任务。有什么建议? THX。
答案 0 :(得分:1)
如果我理解正确,你想要第一个实体,你想要剩余实体的数量?有两种方法可以做到这一点:
limit(1)
将返回第一个实体。首先启动它,但不要实现结果,以便它与第二个并行运行异步。count()
。保留第一个键进行提取,并手动计算其余部分。仅键查询的成本与count()查询的成本相同(每个计数小的操作数),因为count()查询基本上与封面相同。我可能会选择#2。无论哪种方式,我希望你的数量不是很大,否则你会通过很多的小型数据存储操作流失,你的应用程序将会很昂贵!