我有一个持久的课程,'会议'有一个'分钟'和'小时'字段等。我只需要这两个字段来填充我的ui中的下拉列表。 example I found告诉我,我可以创建一个简单的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,0,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..
}
}
答案 0 :(得分: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());
}