Spring Bootで宿予約システムで日付の取得方法がわからない

実現したいこと

よくある宿予約システムの何日~何日までの検索で指定した日付内の宿を出現させたい

発生している問題・分からないこと

検索機能でDBから日付を取得したいがRepositoryがうまくいっていない

該当のソースコード

java

1@PostMapping("/search")2 public String search(3 @RequestParam(value = "name", defaultValue = "") String keyword,4 @RequestParam(value = "checkIn", defaultValue = "") LocalDate checkIn,5 @RequestParam(value = "checkOut", defaultValue = "") LocalDate checkOut,6 @RequestParam(value = "budgeMin", defaultValue = "") Integer budgeMin,7 @RequestParam(value = "budgeMax", defaultValue = "") Integer budgeMax,8 @RequestParam(value = "number", defaultValue = "") Integer number,9 @RequestParam(value = "numPeople", defaultValue = "") Integer numPeople,10 @RequestParam(value = "category", defaultValue = "") Integer categoryId,11 Model model) {12 13 List<Inn> innList = new ArrayList<>();14 15 if (categoryId != null) {16 innList = innRepository.findByCategoryId(categoryId);17 } else if (keyword != null && !keyword.isEmpty()) {18 innList = innRepository.findByName(keyword);19 } else {20 innList = innRepository.findAll();21 }22 23 if (checkIn != null && checkOut != null && numPeople != null && budgeMax != null) {24 List<Reservation> reservations = reservationRepository 25 .findByPriceLessThanEqualAndCheckInBetweenAndCheckOutAndNumPeople(26 budgeMax, checkIn, checkOut, numPeople);27 28 Set<Inn> reservedInns = new HashSet<>();29 for (Reservation reservation : reservations) {30 reservedInns.add(reservation.getInn());31 }32 33 innList.retainAll(reservedInns);34 } 35 36 if (number != null) {37 List<Room> rooms = roomRepository.findByNumber(number);38 39 Set<Inn> innsWithRooms = new HashSet<>();40 for (Room room : rooms) {41 innsWithRooms.add(room.getInn());42 }43 44 innList.retainAll(innsWithRooms);45 }46 47 model.addAttribute("innList", innList);48 return "searchResults"; // Adjust the view name accordingly49 }

java

1public interface ReservationRepository extends JpaRepository<Reservation, Integer> {2 3 List<Reservation> findByPriceLessThanEqualAndCheckInBetweenAndCheckOutAndNumPeople(Integer budgeMax,4 LocalDate checkIn, LocalDate checkOut, Integer numPeople);5 6}

java

1-- 宿テーブル 2CREATE TABLE inn 3(4id SERIAL PRIMARY KEY,5category_id INTEGER REFERENCES category(id),6name VARCHAR(50),7address VARCHAR(100),8access VARCHAR(100),9mapimage VARCHAR(50),10tel VARCHAR(11),11springs INTEGER,12checkIn TIME,13checkOut Time,14texts VARCHAR(100)15);16 17-- 部屋テーブル 18CREATE TABLE room 19(20id SERIAL PRIMARY KEY,21inn_id INTEGER,22name VARCHAR(50),23type VARCHAR(30),24image VARCHAR(50),25number INTEGER,26price INTEGER,27people INTEGER 28);29 30-- 予約テーブル 31CREATE TABLE reservation 32(33id SERIAL PRIMARY KEY,34inn_id INTEGER REFERENCES inn(id),35room_id INTEGER REFERENCES room(id),36user_id INTEGER REFERENCES users(id),37checkin DATE,38checkout DATE,39numPeople INTEGER,40price INTEGER,41payment INTEGER,42cardNum VARCHAR(16)43);

試したこと・調べたこと

上記の詳細・結果

比較でBetweenを使うというのが分かったがLessThanなどでもよいのではないかと感じた

補足

springframework 3.2.5
dependency-management 1.1.4

コメントを投稿

0 コメント