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)" <maxr+appeng...@google.com>
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)
> <maxr+appeng...@google.com<maxr%2bappeng...@google.com>
>
> > 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 <rrmu...@gmail.com> 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
> >> google-appengine-j...@googlegroups.com.
> >> To unsubscribe from this group, send email to
> >> google-appengine-java+unsubscr...@googlegroups.com<google-appengine-java%2bunsubscr...@googlegroups.com>
> >> .
> >> 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 google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.


Reply via email to