2015-06-14 38 views
0

我尽量让这样的代码:物化序列查询

Query<Card> query = ofy().load().type(Card.class); 

    UserData creator = ofy().load().type(UserData.class).id(creatorId).now(); 
    if (creator != null && UserType.USER.equals(creator.getUserType())) { 
     query.filter("creator", creator); 
    } 
    if (orderColumnName != null) { 
     query.order((ascending ? "" : "-") + orderColumnName); 
    } 
    query.offset(startRow).limit(limit); 
    return query.list(); 

但它并不过滤。 此筛选器:

UserData creator = ofy().load().type(UserData.class).id(creatorId).now(); 
    Query<Card> query = ofy().load().type(Card.class).filter("creator", creator); 

任何想法为什么?

EDITED

我班Card.java

@Entity 
public class Card implements PersistableObject { 

    @Id 
    Long id; 

    @Index 
    Date createDate; 

    ... 

    @Index 
    Ref<UserData> creator; 

    ... 

    public UserData getCreator() { 
     if (creator != null) { 
      return creator.get(); 
     } 
     return null; 
    } 

    public void setCreator(UserData creator) { 
     this.creator = Ref.create(creator); 
    } 
} 

我班UserData.java

@Entity 
public class UserData implements PersistableObject { 

    @Id 
    Long id; 

    Ref<EaistoAccount> eaistoAccount; 

    UserType userType; 

    public EaistoAccount getEaistoAccount() { 
     if (eaistoAccount == null) { 
      return null; 
     } 
     return eaistoAccount.get(); 
    } 

    public void setEaistoAccount(EaistoAccount aistoAccount) { 
     this.eaistoAccount = Ref.create(aistoAccount); 
    } 
} 

它不工作,意味着我希望得到过滤实体对应UserData但它不会过滤当我在几个部分拆分查询时,它也会过滤,当我在一行中使用查询。

+1

是什么_ “不工作” _是什么意思?你有错误信息吗?程序是否产生与预期不同的输出? – lfurini

+0

我的意思是过滤在第一种情况下不起作用,但在第二种情况下起作用。 –

+0

它以什么方式不起作用?你能显示你的'Card'和'UserData'类吗? – tx802

回答

0

我已经找到了解决办法:

为什么我查询是否正常工作?所有Objectify的 中间命令对象都是不可变的。这是行不通的:

查询q = ofy()。load()。type(Foo.class); q.filter(“bar”,bar); 列表foos = q.list();过滤器命令没有执行任何操作,因为您的 没有重新分配q。你需要这个:

q = q.filter(“bar”,bar);或者,将单个语句的整个序列链接到一个 。在这里阅读更多。

https://code.google.com/p/objectify-appengine/wiki/FrequentlyAskedQuestions