我在我的dao实现中有这个方法,我试图从查询返回int并将它放在roomNumber int变量中,但我不确定它是否是正确的语法...可能还有其他错误。在调试模式下,我看到int roomNumber字段没有得到任何值,当我跳过它时它的值为0.
@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;
}
db中的预订表:
对于我也尝试过的查询:
select room_room_id from Booking where bookingId=:bookingId
答案 0 :(得分:2)
出于这些目的,方法uniqueResult()
:
int roomNumber = ((Number)query.uniqueResult()).intValue();
编辑:如果你使用hibernate版本> 5.2.2
您可能希望将此更改为方法getSingleResult()
: