检索实体时发生错误

时间:2014-10-24 06:56:39

标签: java database google-app-engine google-cloud-datastore jdo

当我从数据存储中检索对象时,我收到此错误:

  

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

1 个答案:

答案 0 :(得分:0)

您正在将List<Employee>类型的对象转换为Student类型的对象。除非你明确地为Student创建了一个以List<Employee>作为参数的构造函数,否则这不会起作用。

您添加@SuppressWarnings("unchecked")这一事实告诉我您的编译器/ IDE已经警告过您,而不是试图理解它为什么抱怨,您决定快速修复基本上忽略问题滥用这个注释。

现在问题是不可避免的:为什么要将List<Employee>投射到Student ?没有任何一部分是有道理的。你的代码真的允许吗?学生如何需要员工名单?

我认为你需要在java中做一些更基础的学习,以了解一个对象是什么,以及对象拥有一个类型或类的意义,它是一个实例。对不起,我无法提供更多帮助。继续学习java,希望你能理解为什么会出现这个错误。

此外,将来,您应该为用户提供所有相关信息以帮助您。我通常会要求您发布,例如,实例化q的代码,以及完整的堆栈跟踪,而不是堆栈跟踪中的一行。

祝你好运!

相关问题