Вот моя сущность:
@Entity
@Table(name = "reservation")
public class Reservation {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "date_in")
private LocalDate dateIn;
@Column(name = "date_out")
private LocalDate dateOut;
@ManyToOne
private Guest guest;
@ManyToOne
private Room room;
public Reservation() {
}
public Reservation(LocalDate dateIn, LocalDate dateOut, Guest guest, Room room) {
this.dateIn = dateIn;
this.dateOut = dateOut;
this.guest = guest;
this.room = room;
}
public Guest getGuest() {
return guest;
}
public void setGuest(Guest guest) {
this.guest = guest;
}
public Room getRoom() {
return room;
}
public void setRoom(Room room) {
this.room = room;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public LocalDate getDateIn() {
return dateIn;
}
public void setDateIn(LocalDate dateIn) {
this.dateIn = dateIn;
}
public LocalDate getDateOut() {
return dateOut;
}
public void setDateOut(LocalDate dateOut) {
this.dateOut = dateOut;
}
@Override
public String toString() {
return "Reservation{" +
"id=" + id +
", dateIn=" + dateIn +
", dateOut=" + dateOut +
", guest=" + guest +
", room=" + room +
'}';
}
}
Вот мой метод проверки:
@ Override
Общественное бронирование сохранить (Резервирование бронирования) {
validateDate (booking.getDateIn (), booking.getDateOut ());
List<ReservationRepository> bookedRooms = reservationRepository.findBookedRooms();
if (!bookedRooms.contains(reservation)) {
return reservationRepository.save(reservation);
}
return null;
}
findBookedRooms () получает этот SQL-запрос:
@Query(value = "SELECT rs.room_id, rs.date_in, rs.date_out FROM reservation rs LEFT JOIN room r ON rs.room_id = r.id WHERE rs.id IS NOT NULL", nativeQuery = true)
List<ReservationRepository> findBookedRooms();
ПРОБЛЕМА:
В операторе if bookedRooms получает список параметров :servation.room_id ,servation.date_in ,servation.date_out, а объект резервирования получает :servation.id ,servation.date_in ,servation.date_out.
В результате у нас возникает конфликт rs.room_id - rs.id, поэтому «оператор if» всегда будет истинным. Как я могу сделать свой объект резервирования, чтобы получить следующие конкретные параметры :servation.getRoom (). GetNumber (), booking. date_in,
reservation.date_out
Мне нужна эта проверка, чтобы проверить, нет ли противоречий в датах при бронировании определенного номера.