Facts
✅ til repository 수정
✅ til_search 기능 부분 bug fix
Findings
🤔 1차 Error
문제점
처음 JpaRepository에서 쿼리를 요청했을 때, 데이터를 가져와주지 않고 에러가 났다. 🥲
문제 원인
원인을 찾아본 결과, findBy{Column명}을 해줄 때, 기본적으로 column명은 _가 없어야 한다.
해결
그러므로, Entity에 있는 테이블의 컬럼명들을 다 snake case에서 cammel case로 변경해주었다.
위의 방법 외에도 해결방법이 없는지 구글링한 결과,
hibernate 설정 파일에서 CamelCase → SnakeCase 변환을 위해선 별도로 설정을 해야 한다는 것을 알게 되었다.
🤔 2차 Error
문제점
TilView가 True이거나 UserId가 자기자신이면, 해당 TIL 데이터들을 가져오게끔 처리를 해주려고 했다.
처음에는 findByUserOr(UserIdAndTilView을) 해주었으나, 에러가 났다.
문제 원인
JPA 문법에 맞지 않는 명령어이니 에러가 날 수밖에 없는 코드 였다.
해결
조금 머리를 굴려본 결과 findBy A( B and C)를 하고 싶다면, findBy A and B or B and C로 하면 되었다.
Feelings
- JPA 장점에 대해 다시 생각해보게 되었다.
일일이 쿼리문이 안 적어줘도 되기에, 필드가 변경이 되더라도
모든 SQL을 수정할 필요 없이 필드만 변경해주면 된다. 유지보수가 좋다! 👍🏻 - 아무 설정없이 컬럼명을 snake case로 하면, 에러가 나는데, 이에 대한 원인을 제대로 찾지 않아,
일일이 쿼리문을 달았다.
생각해보니 쿼리문을 다 달면 JPA 장점이 다 사라져 해결 방법을 찾아 cammel case로 변경해주었다.
⭐️ 기술을 왜 사용하는지 생각하면서 써야한다!
⭐️ 트러블 슈팅할 때, 에러의 원인을 명확히 파악하고 문제 정의를 명확히 해야 한다!
이를 위해, 현재 내가 아는 것과 모른 것이 무엇인지 정확히 인지하는 습관을 갖자!
'Project > TIL, WIL' 카테고리의 다른 글
TIL(53) JPA 연관관계 에러 고치기 (0) | 2021.12.27 |
---|---|
TIL(52) Elasticbeanstalk에 HTTPS를 연결 (0) | 2021.12.27 |
TIL(50) S3를 이용한 사진 업로드 기능 속도 개선하기 (0) | 2021.12.27 |
TIL(49) 21-12-09: CORS 에러 해결하기 (0) | 2021.12.27 |
TIL(48) 21-12-08: API 문서 자동화와 테스트 코드 작성하기 (Using RestDoc) (0) | 2021.12.27 |