트러블 슈팅: LocalDate를 LocalDateTime으로 변환 시 문제 해결

song yuheon·2023년 10월 21일
0

Trouble Shooting

목록 보기
37/57

문제 상황


프론트에서 날짜 정보를 보냈음에도 불구하고 RequestParam에서 해당 값을 변환하지 못하는 문제 발생하였다.
프론트에서 보내는 형태가 LocalDate이지만 LocalDateTime으로 변환할려고 하니 문제가 발생하였다.

즉 HTTP 요청 파라미터의 문자열 포맷과 @DateTimeFormat 어노테이션의 패턴이 일치하지 않아 변환 오류 발생한걸로 추정된다.


해결 방법


  1. HTTP 요청 파라미터에 @DateTimeFormat 패턴 일치
    LocalDateTime 객체가 아닌 LocalDate객체로 우선해서 받는다. 프론트에서 보내는 형태가 LocalDate임으로

  1. 변환 방법 확인 및 적용

    • LocalDate를 이용해서 검색 기간을 조건을 추가해 QueryDsl로 조회한다.
        public BookDonationEventOnlyPageResponseDto getDonationEventOnlyV3(PageRequest pageRequest, Long donationId, LocalDate eventStartDate, LocalDate eventEndDate) {
         QBookDonationEvent qBookDonationEvent = QBookDonationEvent.bookDonationEvent;
         BooleanBuilder builder = new BooleanBuilder();
    
         if(donationId!=null)
             builder.and(qBookDonationEvent.donationId.eq(donationId));
         if(eventStartDate!=null)
             builder.and(qBookDonationEvent.createdAt.after(eventStartDate.atStartOfDay()));
         if(eventEndDate!=null)
             builder.and(qBookDonationEvent.closedAt.before(eventEndDate.atStartOfDay()));
    
         Page<BookDonationEvent> bookDonationEvents =bookDonationEventRepository.findAll(builder,pageRequest);
         int totalPages = bookDonationEvents.getTotalPages();
         List<BookDonationEventOnlyResponseDto> bookDonationEventResponseDtos = bookDonationEvents.stream().map(BookDonationEventOnlyResponseDto::new).toList();
         return new BookDonationEventOnlyPageResponseDto(bookDonationEventResponseDtos, totalPages);
    
     }

profile
backend_Devloper

0개의 댓글