0

とりわけ「分」と「時間」フィールドを持つ永続クラス「会議」があります。UI にドロップダウンを設定するには、これら 2 つのフィールドだけが必要です。私が見つけた例は、これら 2 つのフィールドだけを格納する単純な 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

INTO は GAE データストアではサポートされていません。あなたが見つけた例は、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 に答える