2015-06-14 84 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