2011-08-01 13 views
0

Netbeans 6.9.1とglassfish 3.1を使用しています.DBはMySqlです。JAVA、値の取得中のSQL例外

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`)); 

私はそのために、これを引き起こしているコード内のSQLでBIGINTintと思うが、私はこの問題を解決することができません。

+0

を:だから、あなたはそのようなint型を得ることができます戻り値ではなく、上の行です。しかし、なぜBigIntをStringに、次にIntを解析しようとしますか? – Jacob

答えて

0

あなたのクエリがBigIntegerを返すような何かをすることをお勧めします。あなたがしたい場合は、エラーがある...

 return ((BigInteger) query.getSingleResult()).intValue(); 
私は、これはより多くの説明を願っ
0

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

4

あなたはこの

Number hotelID = (Number) query.getSingleResult(); 
return hotelID.intValue(); 
0
BigInteger bg = new BigInteger(); 
bg = query.getSingleResult(); 
String hotelId = bg.toString(); 

.....あなたも1行でそれを行うことができます

関連する問題