JAVA, исключение SQL при получении значения - PullRequest
0 голосов
/ 01 августа 2011

Я использую Netbeans 6.9.1 и glassfish 3.1, база данных - MySql.

В базе данных есть таблица с именем HotelNames, мне нужно написать 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, который я написал в приведенном выше коде

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 голосов
/ 01 августа 2011

Вы можете сделать что-то вроде этого

Number hotelID =  (Number) query.getSingleResult();
return hotelID.intValue();
0 голосов
/ 01 августа 2011
BigInteger bg = new BigInteger();
bg = query.getSingleResult();
String hotelId = bg.toString();

Надеюсь, это объясняет больше ..... Вы также можете сделать это в одну строку, если хотите ...

0 голосов
/ 01 августа 2011

Ваш запрос возвращает BigInteger. Таким образом, вы можете получить int такой:

        return ((BigInteger)  query.getSingleResult()).intValue();
0 голосов
/ 01 августа 2011

java.math.BigInteger не может быть приведен к java.lang.String - вы пытаетесь преобразовать идентификатор в строку, которая является BigInteger .. См. String hotelID = (String) query.getSingleResult ();

...