我正在尝试查询数据存储并将其转换为用户定义的对象类型。但是,我得到了一个类投射错误。请查看代码
import com.gwt.samples.shared.List;
public ArrayList<String> viewLists(String user_id) {
PersistenceManager pm = PMF.get().getPersistenceManager();
ArrayList<String> res;
String[] ret;
Query q=pm.newQuery(List.class);
q.setFilter("owner_id == useridparam");
q.declareParameters("String useridparam");
try
{
res=(ArrayList<List>)q.execute(user_id); //error occurs here i guess
}
finally
{
q.closeAll();
}
return res;
}
发生此问题是因为query.execute返回一个Object,并且无法将其转换为ArrayList类型。但是,我从here
开始关注这个例子请帮忙
答案 0 :(得分:2)
我可以建议:
1.删除行
import com.gwt.samples.shared.List;
2.而不是
Query q=pm.newQuery(List.class);
和
res=(ArrayList<List>)q.execute(user_id); //error occurs here i guess
使用
Query q=pm.newQuery(com.gwt.samples.shared.List.class);
和
res=(ArrayList<java.util.List>)q.execute(user_id);
当你说“我猜错误发生在这里”时,我认为你可以通过检查相关的异常堆栈跟踪或日志条目来确定。
此外,我刚看到您的数据成员res
的数据类型为ArrayList<String>
,而您的查询将返回(上面包含我的代码更改)java.util.List<com.gwt.samples.shared.List>
。
您需要更改查询或res
的数据类型才能使其正常运行。
我有一个标准的查询方法。查询返回存储在java.util.List
中。然后我做
java.util.List liResult = [My query];
ArrayList alResult = new ArrayList(liResult);
我的方法的Ouside,我将ArrayList
投射到ArrayList<[Query data type]>
。
任何帮助?