java - Objectify sequence query -
i try have such code:
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();
but doesn't filter. filter:
userdata creator = ofy().load().type(userdata.class).id(creatorid).now(); query<card> query = ofy().load().type(card.class).filter("creator", creator);
any idea why?
edited
my class 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); } }
my class 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); } }
it doesn't work means expect filtered entities corresponding userdata doesn't filter when split query in few parts filters when use query in 1 line.
i have found solution:
why aren't queries working properly? of objectify's intermediate command objects immutable. not work:
query q = ofy().load().type(foo.class); q.filter("bar", bar); list foos = q.list(); filter command did nothing because did not reassign q. need this:
q = q.filter("bar", bar); alternatively, chain whole sequence in single statement. read more here.
https://code.google.com/p/objectify-appengine/wiki/frequentlyaskedquestions
Comments
Post a Comment