如何解决JDO查询排序问题
| 我有一个JDO查询,它对\“ Person \”实体的两个属性进行过滤,将它们称为\“ age \”和\“ height \”。我希望按人员的“得分”来排序结果。但是,由于App Engine施加的限制,我首先必须按年龄或身高排序。所以我目前有query.setOrdering(\"age desc,score asc\");
我真的不对按年龄排序的结果感兴趣,我只需要包括该查询以使查询正常工作(因为我已经按年龄进行了过滤),我真的只需要按分数对结果进行排序。
有没有办法让结果按分数排序并有效地忽略年龄排序?
谢谢
解决方法
您无法先按得分排序,因为没有索引可以支持该查询。
我看到的建议解决方案/解决方法是选择一些预定义的年龄范围,将每个ѭ1的成员资格预先计算为这些范围,然后对该成员资格使用相等过滤器,以便按ѭ2进行排序。
例如,如果您选择\“ <13 \”,\“ 13-18 \”和\“ 18+ \”作为年龄范围,则需要为每个
Person
添加三个布尔属性。然后,您可以执行以下查询:“从Person中选择*,其中isUnder13 =得分的真实顺序”。我猜在这种情况下,由于成员资格是互斥的,因此您可以使用单个枚举属性并搜索类似于“ 4”的内容,这将减少所建立索引的数量。
当然,这意味着您不能具有任意搜索功能...但是选择较少并不总是不利于用户体验。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。