排序顺序是物化查询
忽略我有一个GAE的实体,称为MyFile的排序顺序是物化查询
public class MyFile {
static enum LocationEnum {Folders, Hidden};
static enum FileType {File, Folder);
@Id private Long id;
private Key<MyFile> parent;
private String name;
private LocationEnum location;
private FileType fType;
// getters and setters
}
,并在单独DAO类的功能来查询基于它们的父文件,返回按名称排序的结果。
public List<MyFile> getFiles(Key<MyFile> parent) {
Query<MyFile> q1 = ofy().query(MyFile.class).filter("parent", parent).filter("location", LocationEnum.Folders).order("name");
return q1.list();
}
看起来我的订单被忽略,因为结果按ID排序。我确实发现我错过了一些与索引有关的事情,但我注意到GAE祝福我根据位置,父母,姓名自动生成索引。所以我认为它会起作用。
如何按名称订购?
我发现了这个问题。在App Engine上执行不区分大小写的搜索是不可能的。 GAE将按照大写字母A-Z,然后是a-z进行排序。
您使用的是什么版本的Objectify?从Objectify4开始,所有字段默认为未索引。所以你需要用@Index注释必要的字段。
我正在使用Objectify 3.1。我尝试添加我自己的索引到datastore-indexes.xml作为'name'属性,但没有运气。存在的3个MyFile实体具有测试(id 90),UserGuide.pdf(id 88)和defaultlogo.png(id 87)的名称值。我是否正确地期望它们以defaultlogo.png开始按字母顺序返回? – rossco 2012-04-10 04:57:03
这很奇怪。当您在开发数据存储查看器中查看实体时,是否看到'name'字段? – expert 2012-04-10 05:00:47
是的,我在数据存储查看器中看到名字。值是根据以前的评论。我是否需要将名称作为过滤器来按名称排序? – rossco 2012-04-10 05:04:47
默认的ASCII码顺序。也就是说,如果您为“降序”或“+”从“名称”开始升序(“+名称”),则可能会有诀窍。但是,我不认为这会不区分大小写。 – PSchuette 2016-08-01 03:58:39