次のSQLクエリ:
select distinct hotel.country 'Country', hotel.id 'Hotel ID', hotel.Name'Name', room.id 'Room ID'
from room, stay, reservation, hotel
where
(stay.roomid = room.id)
and (stay.reservationid = reservation.id)
and (reservation.status != 'Booked' AND reservation.status != 'CheckedIn')
and (reservation.arrivaldate >= '2012-08-08')
and (reservation.leavedate <= '2012-08-15')
and (room.hotelid = hotel.id)
order by hotel.country, hotel.id, hotel.name, room.id asc
これにより、国ごとのホテルごとに利用可能な部屋のリストが表示されます。これをHQLに入れる必要がありますが、これが原因でできません。
Query query = session.createQuery("from room, stay, reservation, hotel where stay.roomid = room.id");
stay.roomid
これは、Roomオブジェクトであるのに対し、room.id
単なる整数であるため、機能しません。私はHibernate/HQLにかなり慣れていませんが、リファレンスマニュアルでは実際にはどこにも行きませんでした...このSLQクエリをHQLステートメントに「変換」するにはどうすればよいですか(怖い言葉ですが、実際の変換は含まれていません)。 ?ありがとう。
アップデート
結合を使用すると、同じ問題が発生します
Query query = session.createQuery("" +
"from Stay stay " +
"join stay.ReservationID reservation " +
"join stay.RoomID room " +
"join room.HotelID hotel " +
"where (stay.RoomID = room.ID)");
私はここで何か(おそらく非常に論理的)が本当に欠けています...