次のSQLをJPQLに変換しようとしています。
SELECT *
FROM rooms
WHERE NOT EXISTS
(
SELECT *
FROM booking, booking_has_rooms
WHERE rooms.number=booking_has_rooms.rooms_number AND
booking.booking_id=booking_has_rooms.booking_booking_id AND
:date BETWEEN booking.checkin AND booking.checkout
);
これまでのところ、私はこれを持っています:
SELECT rooms
FROM Rooms rooms
WHERE NOT EXISTS
(
SELECT bk
FROM Booking b
JOIN b.roomsCollection bk
WHERE :date BETWEEN b.checkin AND b.checkout
)
指定された日に予約がない場合、すべての部屋が正しく返されます。ただし、指定された日付に予約があった場合、部屋はまったく返されません。