2017-02-11 68 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