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].
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.


Reply via email to