1

リストを返すデータベースでクエリ検索を行っています。List には Object 型の変数が入ります。query.get(0).getClass() を実行すると、(something).WorkbookMappingClass が返されます。しかし、そのオブジェクトを WorkbookMapping オブジェクトにキャストする必要があります。しかし、I / Oエラーが発生します(おそらく、例外が実質的にグローバルであるためです。)

コードは次のとおりです。

WorkbookMapping wk;
List query = ses.createQuery("FROM Workbook").list();
System.out.println("Class: "+query.get(query.size()).getClass());//return ...WorkbookMapping
wk =(WorkbookMapping)query.get(query.size());

誰にもアイデアがありますか?

4

2 に答える 2

1

リストが配列のように 0 ベースである限り、リスト最後の要素はquery.size ()-1になります。したがって、例ではquery.get(query.size())は null を返します。

于 2013-06-15T16:39:01.053 に答える
1
WorkbookMapping wk;
List query = ses.createQuery("FROM Workbook").list();
System.out.println("Class: "+query.get(query.size()).getClass());//return    ...WorkbookMapping
Object obj = query.get(query.size() - 1)
if(obj instanceof WorkbookMapping) {
    wk =(WorkbookMapping);
}

それとは関係なく、Charlesworth提案されているように、ClassCastExceptionまたはArrayIndexOfBoudsException(でアクセスしているためquery.size())のいずれかが必要です

于 2013-06-15T16:41:46.293 に答える