App Engine - Query using a class member as parameter

Posted by Zach on Stack Overflow See other posts from Stack Overflow or by Zach
Published on 2010-05-03T09:48:39Z Indexed on 2010/05/03 10:48 UTC
Read the original article Hit count: 193

Filed under:
|

I have a simple class, relevant details below:

@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class SimpleCategory implements Serializable{
... 
 public static enum type{
  Course,
  Category,
  Cuisine
 }

 @Persistent
 public type t;
...
}

I am attempting to query all SimpleCategory objects of the same type.

public SimpleCategory[] getCategories(SimpleCategory.type type) {
 PersistenceManager pm = PMF.get().getPersistenceManager();

 try{
  Query q = pm.newQuery(SimpleCategory.class);
  q.setFilter("t == categoryType");
  q.declareParameters("SimpleCategory.type categoryType");
  List<SimpleCategory> cats = (List<SimpleCategory>) q.execute(type);
...
}

This results in a ClassNotResolvedException for SimpleCategory.type. The google hits I've found so far recommended to:

  • Use query.declareImports to specify the class i.e. q.declareImports("com.test.zach.SimpleCategory.type");
  • Specify the fully qualified name of SimpleCategory in declareParameters

Neither of these suggestions has worked. By removing .type and recompiling, I can verify that declareParameters can see SimpleCategory just fine, it simply cannot see the SimpleCategory.type, despite the fact that the remainder of the method has full visibility to it.

What am I missing?

© Stack Overflow or respective owner

Related posts about google-app-engine

Related posts about jdo