2017-02-11 5 views
0

У меня этот метод в моей реализации dao, и я пытаюсь вернуть int из запроса и поместить его в переменную roomNumber int, но я не уверен, что это правильный синтаксис ... и, вероятно, есть и другие ошибки. В режиме отладки я вижу, что поле int roomNumber не получает никакого значения, его значение равно 0, когда я перехожу на него.Как вернуть int из запроса?

@Override 
    public int getRoomNumber(int bookingId) { 
     Session session = sessionFactory.getCurrentSession(); 

     Query query = session.createQuery("select room.roomId from Booking where bookingId=:bookingId"); 

     query.setParameter("bookingId", bookingId); 

     int roomNumber = query.getFirstResult(); 

     return roomNumber; 
    } 

Бронирование таблицы в БД:

enter image description here

для запроса я попробовал также это:

select room_room_id from Booking where bookingId=:bookingId 

ответ

2

Для этих целей существует метод uniqueResult():

int roomNumber = ((Number)query.uniqueResult()).intValue(); 

EDIT: если вы используете спящий режим версии>5.2.2 вы, возможно, хотите изменить это метод getSingleResult():

Hibernate UniqueResult Deprecated

+0

Спасибо за вашу помощь ... просто быстрый вопрос, им получить предупреждение о uniqueResult (): «Метод uniqueResult() из типа Query устарел» - это не проблема? – john

+1

О, вы используете Hibernate 5.x.x, правильно? Я думал, что это версия <5. Пожалуйста, см. Мой обновленный ответ – Andremoniy

+0

Спасибо за последующий ответ. – john