2011-08-01 8 views
0

Netbeans 6.9.1 및 glassfish 3.1을 사용 중이며 DB는 MySql입니다.JAVA, 값을 검색하는 중 SQL 예외가 발생했습니다.

데이터베이스에 HotelNames이라는 테이블이 있는데, 나는 호텔 ID를 얻기 위해 SQL을 작성하고 호텔 이름을 전달해야합니다. 내가 해결할 수없는 예외가 생겼다.

@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에 포인트를 획득 예외는

MySQL은 테이블을 생성
Caused by: java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.String 

같이 보입니다;

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

나는 그 때문에이 문제를 일으키는 코드에서는 SQL에서 BIGINTint의 생각하지만, 나는이 문제를 해결할 수없는입니다.

+0

을 : 그래서 당신은 그런 int를 얻을 수 있습니다 반환에서 아닙니다, 그것의 선. 하지만, 왜 BigInt를 String으로 그리고 Int를 파싱하려고합니까? – Jacob

답변

0

처럼 뭔가를 할 수 있습니다. 당신이 원하는 경우 오류가 ...

 return ((BigInteger) query.getSingleResult()).intValue(); 
나는이 좀 더 설명하겠습니다
0

java.math.BigInteger의는 java.lang.String의 캐스트 할 수없는 - 당신의 BigInteger 인 문자열로 ID를 .. 참조 문자열 hotelID = (문자열) query.getSingleResult()로 변환하려고;

4

당신은 당신의 쿼리가 BigInteger 반환이

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

..... 당신은 또한 한 줄에 그것을 할 수

관련 문제