2017-02-11 69 views
0

我在我的dao實現中有這種方法,並試圖從查詢中返回int並將它放在roomNumber int變量中,但我不知道它是否是正確的語法......並且可能還有其他錯誤。在調試模式中,我看到int roomNumber字段沒有得到任何值,當我跨過它時,它的值爲0。在DB如何從查詢返回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(); 

編輯:如果使用休眠版本>5.2.2你可能會想改變這方法getSingleResult()

Hibernate UniqueResult Deprecated

+0

感謝您的幫助...只是一個快速的問題,即時得到有關uniqueResult警告( ): 「來自類型Query的uniqueResult()方法已被棄用」 - 這不會是一個問題嗎? – john

+1

哦,你使用的是Hibernate 5.x.x,對不對?我認爲它是版本<5。請參閱我的更新回答 – Andremoniy

+0

感謝您的後續答案。 – john