0

我有一个持久类,“会议”,其中有一个“分钟”和“小时”字段。我只需要这两个字段来填充我的 ui 中的下拉列表。我找到的示例告诉我,我可以创建一个仅包含这两个字段的简单 bean,但我收到一条错误消息,指出它无法将 Integer 转换为 MyTime 对象。它显然没有将数据映射到 bean,不幸的是,这是我能找到的唯一示例。

    String query = "select hour as myHour, minute as myMinute into " + MyTime.class.getName() + " from " + Meeting.class.getName(); //+ 
    List<MyTime> times = (List<MyTime>)pm.newQuery(query).execute();

    for(int i=0; i<times.size(); i++) {
        MyTime myTime = (MyTime)times.get(i);
        System.out.println(myTime.getMyHour());
        System.out.println(myTime.getMyMinute());
    }

以下是运行执行后调试模式下“时间”的样子:[0, 0, 0, 0, 0, 0, 8, 10, 21]

然后,当我尝试将时间转换和索引到 MyTime 对象时,我在 for 循环中遇到错误。java.lang.ClassCastException:java.lang.Integer 无法转换为 com.emooney.meeting.beans.MyTime

有什么想法可以在不必为每次会议带回整个“会议”对象的情况下获取这些数据吗?

这是 MyTime bean:

public class MyTime {
    public int myHour;
    public int myMinute;

    .. getters and setters..
}

}

4

1 回答 1

0

GAE 数据存储不支持 INTO。我认为您找到的示例是针对 rdbms 进行查询的。

在 GAE/DS 中,您可以只获取密钥或整个对象;您需要获取整个对象。

List<Meeting> meetingTimes = (List<Meeting>) pm.newQuery(Meeting.class)
    .execute();

for (Meeting meeting : meetingTimes) {
    MyTime myTime = new MyTime(meeting.hour, meeting.hour);
    System.out.println(myTime.getMyHour());
    System.out.println(myTime.getMyMinute());
}
于 2011-01-07T21:33:57.503 回答