Objectify查询中忽略排序顺序

时间:2012-04-09 02:08:26

标签: google-app-engine objectify

我有一个名为 MyFile

的GAE实体
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根据位置,父级,名称为我提供了一个自动生成的索引。所以我认为它会起作用。

如何按名称订购?

2 个答案:

答案 0 :(得分:1)

我发现了问题。无法在App Engine上进行不区分大小写的搜索。 GAE将按大写第一个A-Z命令,然后是a-z。

答案 1 :(得分:0)

您使用的是什么版本的Objectify?从Objectify4开始,所有字段默认为无索引。因此,您需要使用@Index注释必要的字段。