【问题标题】:while retrieving entity occurs an error检索实体时发生错误
【发布时间】:2014-12-19 23:56:42
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    您将List&lt;Employee&gt; 类型的对象转换为Student 类型的对象。除非您为Student 显式创建了一个以List&lt;Employee&gt; 作为参数的构造函数,否则这将不起作用。

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

    现在问题是不可避免的:你为什么要将List&lt;Employee&gt; 转换为Student?这没有任何意义。您的代码实际上允许这样做吗?学生如何需要员工名单?

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

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

    祝你好运!

    【讨论】:

      猜你喜欢
      • 2016-05-04
      • 2018-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-17
      • 1970-01-01
      相关资源
      最近更新 更多