// NOTE: Always use a model to design your service // Service Interface public interface RoomReservationService { List<RoomReservation> getReservationsByDate(Date reservationDate); } // Service class Implementation @Service public class RoomReservationServiceImpl implements RoomReservationService { @Autowired private ReservationRepository reservationRepository; @Autowired private RoomRepository roomRepository; @Autowired private GuestRepository guestRepository; @Override public List<RoomReservation> getReservationsByDate(Date reservationDate) { List<RoomReservation> roomReservations = new ArrayList<>(); // This "Reservation" is an Entity that represents the intermediate table which connects other tables List<Reservation> reservations = reservationRepository.findAllByReservationDate(reservationDate); List<Guest> guests = guestRepository.findAll(); // Fetch all data from Guest table List<Room> rooms = roomRepository.findAll(); // Fetch all data from Room table for (Reservation reservation : reservations) { Long roomId = reservation.getRoomId(); Room room = roomRepository.findById(roomId).orElse(null); // Filter information from Room entity / table Long guestId = reservation.getGuestId(); Guest guest = guestRepository.findById(guestId).orElse(null); // Filter information from Guest entity / table if (room != null && guest != null) { RoomReservation roomReservation = new RoomReservation(); // Start working with model roomReservation.setReservationId(reservation.getReservationId()); roomReservation.setRoomNumber(room.getRoomNumber()); roomReservation.setGuestName(guest.getGuestName()); roomReservation.setReservationDate(reservation.getReservationDate()); roomReservations.add(roomReservation); } } return roomReservations; } }