02.17
스택오버플로우 클론 프로젝트에서 Question 부분을 담당하고있음
진행사항
question부분 crud 작업
* 증상 : crud를 모두 완성했는데 bean관련 exception이 뜨고 실행이 종료
exception 내용 : BeanDefinitionStoreException: Failed to parse configuration class
해결 방법 :
폴더 변경 전의 bean 이름이 사라지지 않아 폴더 변경 후의 bean 이름과 중복된다고 되어 있습니다.
1. 프로젝트 안에 out 폴더를 찾아 삭제한다.
2. gradle에서 clean을 실행한다.
3. gradle에서 build를 실행한다.
이 과정을 진행했더니 말끔히 진행이 잘 된다.
* 증상 : post를 진행하면 401에러가 뜬다 / localhost접속 시 login페이지로만 접속된다
해결 방법
// implementation 'org.springframework.boot:spring-boot-starter-security'
// testImplementation 'org.springframework.security:spring-security-test'
요 두놈을 주석처리 하였음
security의존성을 추가하고 아무것도 하지않아서 login페이지로 이동하는거였음!
* 증상 : 위에것을 해결했더니 이번엔 500에러가 발생
exception : .SQLSyntaxErrorException: Unknown column 'question0_.contents' in 'field list’
해결방법 : entity클래스와 postdto상의 변수명을 일치시켰다 content -> contens
// 기존 question테이블에서 contents가 아니라 body로 되어있어서 삭제 후 재실행 하였음
* 증상 : 500에러 발생
exception : SQLIntegrityConstraintViolationException: Column 'contents' cannot be null
해결방법 :
@Column(nullable = false)
주석처리하였음
그런데 generated의 Mapperlmpl 부분에 setcreated를 해주는 방법 등 여러 가지를 해봐도 작성시간은 아무리해도 null로 표시되고 안뜬다 ㅠㅠ 해결방법찾아봐야함
- tip. mysql에 enum 문자열값으로 저장하기
@Enumerated(value = EnumType.STRING) //enum값 string으로 출력
private QuestionStatus questionStatus = QuestionStatus.QUESTION_REGISTRATION;
* 증상 : mysql에 (LocalDateTime)현재 시간이 추가되지 않음
해결방법 :
@CreatedDate
@Column(nullable = false)
private LocalDateTime createdAt ;
@LastModifiedDate
private LocalDateTime modifiedAt;
과 짝이 되는 애너테이션이 있었음
- 에플리케이션(실행파일) 필요 애너테이션 :
- 엔티티 클래스 필요 애너테이션
@EntityListeners(AuditingEntityListener.class)