JAVA, исключение SQL при получении значения

Я использую 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 ответа

Решение

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

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

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

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

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

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

Другие вопросы по тегам