我有一个简单的课程,相关详情如下:
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class SimpleCategory implements Serializable{
...
public static enum type{
Course,
Category,
Cuisine
}
@Persistent
public type t;
...
}
我试图查询所有相同类型的SimpleCategory对象。
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);
...
}
这导致SimpleCategory.type的ClassNotResolvedException。到目前为止我发现的google点击率建议:
这些建议都没有奏效。通过删除.type和重新编译,我可以验证declareParameters 可以看到SimpleCategory就好了,它根本看不到SimpleCategory.type,尽管该方法的其余部分对它有完全的可见性。 / p>
我错过了什么?
答案 0 :(得分:1)
您遗漏了...
)public static enum type
本身是否被宣布为@PersistenceCapable
。如果不是,这可能解释了为什么查询解析器无法解析对type
类的引用。
答案 1 :(得分:0)
似乎对我有用的东西是使用隐式参数编写查询字符串而不使用declareParameters()方法。
q.setFilter("t == :categoryType");
List<SimpleCategory> cats = (List<SimpleCategory>) q.execute(type)