簡體   English   中英

對象化序列查詢

[英]Objectify sequence query

我嘗試有這樣的代碼:

    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);

知道為什么嗎?

已編輯

我的班級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,但是當我將查詢分為幾部分時它不會過濾,當我在一行中使用查詢時它也會過濾。

我找到了解決方案:

為什么我的查詢不能正常工作? Objectify的所有中間命令對象都是不可變的。 這將不起作用:

查詢q = ofy()。load()。type(Foo.class); q.filter(“ bar”,bar); 列出foos = q.list(); filter命令沒有執行任何操作,因為您沒有重新分配q。 你需要這個:

q = q.filter(“ bar”,bar); 或者,將整個序列鏈接在一​​個語句中。 在這里閱讀更多。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM