[JMT 커피 주문 시스템 - 게시판 만들기]

public class QnADto{
    private QuestionDto.Response question;
    private String content;

    public QnADto(QuestionDto.Response question, Answer answer) {
        this.question = question;
        this.content = (answer==null ? "" : answer.getContent());
    }
}
@GetMapping
    public ResponseEntity getQuestions(Pageable pageable) {
        Page<Question> questionPage = questionService.getQuestions(pageable);
        List<Question> questionList = questionPage.getContent();
        return new ResponseEntity(new MultiDto<>(questionList.stream().map(
                question -> new QnADto(mapper.questionToResponseDto(question), question.getAnswer()))
                .collect(Collectors.toList()), questionPage), HttpStatus.OK);
    }
  • 위와 같이 수정했더니 됐다!ㅠㅠ 해결했다~~☺️
    일단 순환 참조를 막기 위해, 제네릭 T가 아니라 DTO, String과 같이 정확한 타입으로 값을 받았다.
    그리고 답변을 등록하면 질문&답변 조회가 되는데, 답변이 없으면 에러가 나길래, 답변이 없을 경우(null)를 위의 삼항연산자와 같이 따로 설정해줘야 한다고 생각해서 수정했더니, 예측이 적중했다.
  • Handler dispatch failed; nested exception is java.lang.NoSuchMethodError 도 떴는데, 위에 것을 해결하니까 자연히 해결됨.
    혹시 몰라서 빌드클린 하고, generated 폴더 지우고 다시 빌드 및 실행함.
    https://ohdaldal.tistory.com/19
    https://blog.naver.com/PostView.nhn?blogId=arborlucens&logNo=222000415495&parentCategoryNo=&categoryNo=17&viewDate=&isShowPopularPosts=true&from=search
  • stream() .findFirst() 와 .findAny()
    findFirst() 는 리턴값이 Optional임. 유용하다.
    https://codechacha.com/ko/java8-stream-difference-findany-findfirst/
    https://isntyet.github.io/java/java-stream-%EC%A0%95%EB%A6%AC(filter)/
  • 다대다 관계를 일대다,다대일로 연결하는 조인 테이블에서, 계속 외래키가 null값이 뜨는 에러가 있었다. 한참을 고민하다가 결국 스터디 동기님들께 sos쳤는데, 역시 집단 지성이 최고고, 동기님들은 다 천재다.
    결론부터 말하면, cascade = CascadeType.ALL 로 바꿨더니 됨!
    새로 만든 객체가 준영속 상태에 있으므로, 그 값을 함께 persist 해주려면, merge가 필요하기 때문이다.
  • LocalDateTime 에서 plus, minus, isAfter() 등을 이용해서 시간 비교 가능하다.
    https://sunghs.tistory.com/128
  • build 툴이 intelliJ여서, 프로그램 실행하면 src 폴더 밑에 generated 폴더가 자동으로 생긴다. 근데 이게 또 뭔가 수정 사항이 제대로 반영이 안 될 때가 있어서 지워줘야 함,, 넘 불편스.

    저거 설정 해제해도 실행하면 다시 설정됨,,^^⭐️
  • JpaRepository에 JPQL 쿼리 쓰기.
    https://sundries-in-myidea.tistory.com/91

[느낀 점]
오늘 하루종일 만져서 게시판 요구 사항 거의 맞췄다.
지금 구현하지 않은 건, '첨부파일 업로드, 검색, 알림' 2~3순위 3가지, 그리고 1순위 시큐리티다.

내일은 Ngrok으로 시험 배포해서 동기님들께 영광의 QA 받아보고,
시간 남으면 오늘 제낀 To-do-App 구현해야겠다.

0개의 댓글