(내일배움캠프) TIL(13) - 6주차: QueryMethod

Thomas·2023년 6월 29일
0
post-thumbnail

lv2 과제를 시작하기전 lv1 과제에 이어서 추가적 기능인 회원가입,로그인 기능을 추가를 하기 떄문에 lv1 과제에 미흡했던 부분을 수정 하기를 위해 오랜만에 lv1 프로젝트를 키게 되었다.

lv1 과제에서 수정을 해야할 부분은 두가지였다.
1. 작성 날짜 기준 내림차순으로 정렬하기
2. Api 명세서 처럼 Resopnse 맞추기

1번 수정사항인 "작성 날짜 기준 내림차순으로 정렬하기" 끼먹고 구현을 못 한거라 바로 Repository로 들어가서 queryMethod로 짜주고 service에서 findAll()를 구현한 query Method으로 바꿔줬다.

2번 수정사항까지 수정을 다하고
이 두개 수정사항은 간단한거니깐 테스트를 하기 싫었지만 혹시 모르니깐 테스트를 할려고 실행 시키니깐 에러가 뜨는것이다...

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'postController' defined in file [/Users/sanguiseong/Documents/sparta/spring/blog/build/classes/java/main/com/sparta/blog/controller/PostController.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'postService' defined in file [/Users/sanguiseong/Documents/sparta/spring/blog/build/classes/java/main/com/sparta/blog/service/PostService.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'postRepository' defined in com.sparta.blog.repository.PostRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Could not create query for public abstract java.util.List com.sparta.blog.repository.PostRepository.findAllByOrderByCreateAtDesc(); Reason: Failed to create query for method public abstract java.util.List com.sparta.blog.repository.PostRepository.findAllByOrderByCreateAtDesc(); No property 'createAt' found for type 'Post'; Did you mean 'createdAt'
	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:800) ~[spring-beans-6.0.9.jar:6.0.9]
	at 

긴 에러 메세지이지만 Did you mean 'createdAt' 이 부분에서 내가 queryMethod를 잘 못 짰구나 인지를 하게 되었다...

List<Post> findAllByOrderByCreatedAtDesc();

이렇게 짜야할걸

List<Post> findAllByOrderByCreateAtDesc();

짜버렸던것이다...

나는 PostResponseDto에서

private LocalDateTime createAt;

이렇게 선언했으니 QueryMethod에선 createdAt으로 짜주는게 100% 맞다

한가지 오류인 상태에서 쉽게 발견한거지... 만약에 여러개 오류가 있었음 쉽게 찾았을까라는 의문이 생긴다!!

QueryMethod 다른예제

List findAllByOrderByModifiedAtDesc();
-> modifiedAt이라는 필드 데이터 기준으로 정렬해서 전체 데이터를 보낼건데 그 기준은 내림차순입니다.
메서드명을 분석을 한 다음에 SimpleJpaRepository에서 구현이 된다.
그래서 우리는 필요한 SQL에 해당하는 이 method 이름 패턴으로 method를 선언하기만 하면 우리가 따로 구현을 하지 않아도 손쉽게 사용을 할 수가 있다.
-> SQL을 직접 작성하지 않아도 정해져있는 규칙에 맞게끔 메소드를 선언하기만 하면 사용할 수 있다.

profile
Backend Programmer

0개의 댓글