Как сохранить отношение ManyToOne и получить идентификатор с другого сайта Java Spring ⇐ JAVA
Как сохранить отношение ManyToOne и получить идентификатор с другого сайта Java Spring
Я новичок и создаю сайт для бронирования номеров в отелях, используя Java Spring и Thymesleaf. У меня есть 3 объекта: Комната, Человек, Бронирование. Пользователь может выбрать комнату в «/room» (из базы данных), а затем заполнить данные о человеке в «/guestReservation» (они сохраняются в базе данных). Затем после нажатия «подтвердить» я хочу сделать бронирование, сохранить его в базе данных и перенаправить на «/reservationConfirmation»
Субъект резервирования
Резервирование общедоступного класса { @Идентификатор @GeneratedValue частный длинный идентификаторReservation; @ManyToOne @JoinColumn(name="idPerson") частное лицо лицо; @ManyToOne @JoinColumn(name="idRoom") отдельная комната; } Объект комнаты
Комната общественного класса { @Идентификатор @GeneratedValue частный длинный idRoom; @Не пусто частная строка nameRoom; @Не ноль частная призовая комната BigDecimal; частный SizeOfRoom sizeOfRoom; частная строка photoFilename; } Личное лицо
публичный класс Person { @Идентификатор @GeneratedValue частный длинный idPerson; @Не пусто частная строка firstName; @Не пусто частная строка LastName; @Прошлое @Не ноль частный LocalDate доб; @Электронная почта @Не пусто @Column(уникальный = правда) личная строка электронной почты; @Не пусто частная строка номер телефона; } Я использую репозиторий Crud
@Repository общедоступный интерфейс ReservationRepository расширяет CrudRepository { } Выберите комнату в Room Controller, и я отправлю идентификатор комнаты в URL-адресе:
@PostMapping(params = "choose=true") public String ChooseRoom(@RequestParam(name = "selectedRoomId", требуется = false) List selectedRoomId, HttpSession httpSession) { если (selectedRoomId!= ноль) { Необязательный room = roomRepository.findById(selectedRoomId.get(0)); httpSession.setAttribute("selectedRoomId",selectedRoomId); Построитель UriComponentsBuilder = ServletUriComponentsBuilder.fromCurrentContextPath() .path("/guestReservation") .queryParam("roomId", selectedRoomId); вернуть «перенаправление:» + builder.toUriString(); } Еще верните «перенаправление: комната»; } Подтвердите дату человека в Person Controller, и я отправлю идентификатор комнаты и идентификатор человека в URL-адресе:
@PostMapping(params = "confirm=true") public String submitPerson(@RequestParam(name = "selectedPersonId", требуемый = false) List selectedPersonId, HttpSession httpSession) { если (selectedPersonId != ноль) { Необязательный person = personRepository.findById(selectedPersonId.get(0)); httpSession.setAttribute("selectedPersonId", selectedPersonId); List selectedRoomId = (List) httpSession.getAttribute("selectedRoomId"); if (selectedRoomId != null && !selectedRoomId.isEmpty()) { Длинный roomId = selectedRoomId.get(0); Построитель UriComponentsBuilder = ServletUriComponentsBuilder.fromCurrentContextPath() .path("/reservationConfirmation") .queryParam("roomId", roomId) .queryParam("personId", selectedPersonId); вернуть «перенаправление:» + builder.toUriString(); } } вернуть «перенаправление: GuestReservation»; } **После нажатия «подтвердить» в «/guestReservation» я хочу создать бронирование и сохранить его в БД, но это не работает
Это мой контроллер бронирования**
@PostMapping("/guestReservation/confirm=true") public String saveReservation(@RequestParam("roomId") Long roomId, @RequestParam("personId") Long personId) { Комната комната = roomRepository.findById(roomId).orElse(null); Человек person = personRepository.findById(personId).orElse(null); if (комната != ноль && человек != ноль) { Резервирование резервирования = новое резервирование(); резервирование.setRoom(комната); резервирование.setPerson(человек); резервированиеRepository.save(резервирование); вернуть «Подтверждение бронирования»; } Еще верните "guestReservation"; } Я так долго пытаюсь и тестировал несколько методов сохранения резервирования в БД, как мне это сделать, что здесь поможет?
Я новичок и создаю сайт для бронирования номеров в отелях, используя Java Spring и Thymesleaf. У меня есть 3 объекта: Комната, Человек, Бронирование. Пользователь может выбрать комнату в «/room» (из базы данных), а затем заполнить данные о человеке в «/guestReservation» (они сохраняются в базе данных). Затем после нажатия «подтвердить» я хочу сделать бронирование, сохранить его в базе данных и перенаправить на «/reservationConfirmation»
Субъект резервирования
Резервирование общедоступного класса { @Идентификатор @GeneratedValue частный длинный идентификаторReservation; @ManyToOne @JoinColumn(name="idPerson") частное лицо лицо; @ManyToOne @JoinColumn(name="idRoom") отдельная комната; } Объект комнаты
Комната общественного класса { @Идентификатор @GeneratedValue частный длинный idRoom; @Не пусто частная строка nameRoom; @Не ноль частная призовая комната BigDecimal; частный SizeOfRoom sizeOfRoom; частная строка photoFilename; } Личное лицо
публичный класс Person { @Идентификатор @GeneratedValue частный длинный idPerson; @Не пусто частная строка firstName; @Не пусто частная строка LastName; @Прошлое @Не ноль частный LocalDate доб; @Электронная почта @Не пусто @Column(уникальный = правда) личная строка электронной почты; @Не пусто частная строка номер телефона; } Я использую репозиторий Crud
@Repository общедоступный интерфейс ReservationRepository расширяет CrudRepository { } Выберите комнату в Room Controller, и я отправлю идентификатор комнаты в URL-адресе:
@PostMapping(params = "choose=true") public String ChooseRoom(@RequestParam(name = "selectedRoomId", требуется = false) List selectedRoomId, HttpSession httpSession) { если (selectedRoomId!= ноль) { Необязательный room = roomRepository.findById(selectedRoomId.get(0)); httpSession.setAttribute("selectedRoomId",selectedRoomId); Построитель UriComponentsBuilder = ServletUriComponentsBuilder.fromCurrentContextPath() .path("/guestReservation") .queryParam("roomId", selectedRoomId); вернуть «перенаправление:» + builder.toUriString(); } Еще верните «перенаправление: комната»; } Подтвердите дату человека в Person Controller, и я отправлю идентификатор комнаты и идентификатор человека в URL-адресе:
@PostMapping(params = "confirm=true") public String submitPerson(@RequestParam(name = "selectedPersonId", требуемый = false) List selectedPersonId, HttpSession httpSession) { если (selectedPersonId != ноль) { Необязательный person = personRepository.findById(selectedPersonId.get(0)); httpSession.setAttribute("selectedPersonId", selectedPersonId); List selectedRoomId = (List) httpSession.getAttribute("selectedRoomId"); if (selectedRoomId != null && !selectedRoomId.isEmpty()) { Длинный roomId = selectedRoomId.get(0); Построитель UriComponentsBuilder = ServletUriComponentsBuilder.fromCurrentContextPath() .path("/reservationConfirmation") .queryParam("roomId", roomId) .queryParam("personId", selectedPersonId); вернуть «перенаправление:» + builder.toUriString(); } } вернуть «перенаправление: GuestReservation»; } **После нажатия «подтвердить» в «/guestReservation» я хочу создать бронирование и сохранить его в БД, но это не работает
Это мой контроллер бронирования**
@PostMapping("/guestReservation/confirm=true") public String saveReservation(@RequestParam("roomId") Long roomId, @RequestParam("personId") Long personId) { Комната комната = roomRepository.findById(roomId).orElse(null); Человек person = personRepository.findById(personId).orElse(null); if (комната != ноль && человек != ноль) { Резервирование резервирования = новое резервирование(); резервирование.setRoom(комната); резервирование.setPerson(человек); резервированиеRepository.save(резервирование); вернуть «Подтверждение бронирования»; } Еще верните "guestReservation"; } Я так долго пытаюсь и тестировал несколько методов сохранения резервирования в БД, как мне это сделать, что здесь поможет?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение