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.

Reply via email to