当我从数据存储中检索对象时,我收到此错误:
com.google.appengine.datanucleus.query.StreamingQueryResult无法转换为com.relationship.Student`
这是我的代码:
javax.jdo.Query q=pm.newQuery(Student.class);
//String fname="karthi";
q.setFilter("name == 'karthi'");
@SuppressWarnings("unchecked")
List<Employee> results = (List<Employee>) q.execute("karthi@gmail.com");
Student e = (Student) results;
resp.getWriter().println(e.getName());
数据存储区具有以下属性和值:
ID/Name college name
karthi@gmail.com AMS karthi
答案 0 :(得分:0)
您正在将List<Employee>
类型的对象转换为Student
类型的对象。除非你明确地为Student
创建了一个以List<Employee>
作为参数的构造函数,否则这不会起作用。
您添加@SuppressWarnings("unchecked")
这一事实告诉我您的编译器/ IDE已经警告过您,而不是试图理解它为什么抱怨,您决定快速修复基本上忽略问题滥用这个注释。
现在问题是不可避免的:为什么要将List<Employee>
投射到Student
?没有任何一部分是有道理的。你的代码真的允许吗?学生如何需要员工名单?
我认为你需要在java中做一些更基础的学习,以了解一个对象是什么,以及对象拥有一个类型或类的意义,它是一个实例。对不起,我无法提供更多帮助。继续学习java,希望你能理解为什么会出现这个错误。
此外,将来,您应该为用户提供所有相关信息以帮助您。我通常会要求您发布,例如,实例化q
的代码,以及完整的堆栈跟踪,而不是堆栈跟踪中的一行。