0

私は Netbeans 6.9.1 と Glassfish 3.1 を使用しています。DB は MySql です。

データベースに というテーブルがありHotelNamesます。SQL を記述し、ホテル名を渡してホテル ID を取得する必要があります。解決できない例外が発生します。

    @Override
public int GetHotelID(String hotellName) {
   Query query  = em.createNativeQuery("select ID from HotelNames where hotName ='"+ hotellName+"'");
    String hotelID =  (String) query.getSingleResult();

    return Integer.parseInt(hotelID );
}

上記のコードで書いたSQLへのポイントを取得する例外

Caused by: java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.String

MySQL 作成テーブルは次のようになります。

CREATE TABLE HotelNames (`ID` BIGINT NOT NULL AUTO_INCREMENT, `hotName` VARCHAR(255), PRIMARY KEY (`ID`));

BIGINTこれはSQLとコードに原因があると思いますが、intこれを解決できません。

4

4 に答える 4

4

あなたはこのようなことをしたいかもしれません

Number hotelID =  (Number) query.getSingleResult();
return hotelID.intValue();
于 2011-08-01T06:58:29.823 に答える
0
BigInteger bg = new BigInteger();
bg = query.getSingleResult();
String hotelId = bg.toString();

これでもっと説明がつくことを願っています.....必要に応じて、1行で実行することもできます...

于 2011-08-01T07:07:15.857 に答える
0

java.math.BigInteger は java.lang.String にキャストできません - ID を文字列 (BigInteger) に変換しようとしています。 String hotelID = (String) query.getSingleResult(); を参照してください。

于 2011-08-01T06:54:11.353 に答える
0

クエリは を返しますBigInteger。したがって、次のような int を取得できます。

        return ((BigInteger)  query.getSingleResult()).intValue();
于 2011-08-01T06:59:56.563 に答える