【发布时间】:2019-05-16 19:44:06
【问题描述】:
这是我的实体:
@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 +
'}';
}
}
这是我的验证方法:
@覆盖 公共预订保存(预订预订){ validateDate(reservation.getDateIn(), reservation.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 获取 List of:reservation.room_id、reservation.date_in、reservation.date_out 参数,而 reservation Object 获取:reservation.id、reservation.date_in、reservation.date_out。 因此我们有 rs.room_id - rs.id 冲突,所以“if 语句”将始终为真。我怎样才能让我的预订对象获得这些特定参数:reservation.getRoom().getNumber()、预订。日期输入, reservation.date_out?
我需要此验证来检查在预订特定房间时是否存在日期冲突。
【问题讨论】:
标签: java hibernate model-view-controller