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