2011-08-01 42 views
0

我使用NetBeans 6.9.1,和GlassFish 3.1 SQL異常,DB是MySQL的。JAVA,而檢索值

有一個名爲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

的錯誤是不在回報中,它的上面一行。但是,爲什麼你嘗試解析一個BIGINT到字符串,然後INT? – Jacob

回答

0

查詢返回的BigInteger。所以,你可以得到這樣的一個int:

 return ((BigInteger) query.getSingleResult()).intValue(); 
0

java.math.BigInteger中不能轉換爲java.lang.String - 您正試圖將ID字符串,這是BigInteger的.. 參見字符串hotelID =(字符串)query.getSingleResult()轉換;

4

您可能需要做這樣的事情

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

我希望這解釋了更多.....你也可以做到在一個行,如果你想...