物化序列查询
问题描述:
我尽量让这样的代码:物化序列查询
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但它不会过滤当我在几个部分拆分查询时,它也会过滤,当我在一行中使用查询。
答
我已经找到了解决办法:
为什么我查询是否正常工作?所有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
是什么_ “不工作” _是什么意思?你有错误信息吗?程序是否产生与预期不同的输出? – lfurini
我的意思是过滤在第一种情况下不起作用,但在第二种情况下起作用。 –
它以什么方式不起作用?你能显示你的'Card'和'UserData'类吗? – tx802