No worries, when do you think it might be fixed? just out of interest, no pressure ;)
On Jan 8, 6:12 pm, "Max Ross (Google)" <[email protected]> wrote: > I'm really sorry but I've been unable to construct an equivalent query that > avoids this bug. If the size of keyList isn't too large I'd recommend > executing a batch get to retrieve all those objects by id and then applying > the rest of your filter in-memory. > > Sorry for the trouble. > > Max > > On Fri, Jan 8, 2010 at 9:48 AM, Max Ross (Google) > <[email protected]<maxr%[email protected]> > > > wrote: > > Thanks for the report, looks like a bug. Multiple contains() clauses are > > fine but I didn't properly account for the case where one of the clauses is > > on the primary key of the object. The fix should be straightforward but let > > me see if I can get you a workaround. > > > Max > > > On Thu, Jan 7, 2010 at 7:06 PM, siliconeagle <[email protected]> wrote: > > >> Basically i have 3 fields in the same table to select by > >> using .contains() clauses - one is the primary key field > > >> so :keyList (java.util.Set<Key>) , :feedTypes (java.util.Set<Integer>) > >> & :contentTypes(java.util.Set<Integer>) with values i need to select > >> with. > > >> The Feed object (and the relevant fields) is > >> @PersistenceCapable(identityType = IdentityType.APPLICATION) > >> public class Feed { > > >> �...@primarykey > >> �...@persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) > >> private Key id; > >> ... > >> �...@persistent > >> private int typeFeed ; > >> �...@persistent > >> private int typeContent = CONTENT_TYPE_NOTCHECKED; > >> .... > >> } > > >> so i try this > >> Query query1 = pm.newQuery(Feed.class); > >> query1.setFilter(":keyList.contains(id) && :feedTypes.contains > >> (typeFeed) && :contentTypes.contains(typeContent)"); > >> query1.setRange(0,500); > >> Map<String, Collection> paramsf = new HashMap<String, Collection>(); > >> paramsf.put("keyList", feedIds); > >> paramsf.put("feedTypes", feedTypes); > >> paramsf.put("contentTypes", contentTypes); > >> feeds = (List<Feed>) query1.executeWithMap(paramsf); > > >> and i get > >> javax.jdo.JDOFatalUserException: Batch lookup by primary key is only > >> supported if no other filters and no sort orders are defined. > > >> Is there any way around it - from other posts it looks like subqueries > >> an the IN syntax arent supported. > > >> -- > >> You received this message because you are subscribed to the Google Groups > >> "Google App Engine for Java" group. > >> To post to this group, send email to > >> [email protected]. > >> To unsubscribe from this group, send email to > >> [email protected]<google-appengine-java%[email protected]> > >> . > >> For more options, visit this group at > >>http://groups.google.com/group/google-appengine-java?hl=en.
-- You received this message because you are subscribed to the Google Groups "Google App Engine for Java" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
