상세 컨텐츠

본문 제목

@Query : QueryException could not resolve property : column of entity

메모 - 프로그래밍/이슈

by wjjun 2018. 10. 20. 18:51

본문

Edit

문제발생 : 특정 패키지 경로에 있는 entity board_no 컬럼 찾을 수 없다는 오류 발생

  • 오류 : QueryException could not resolve property : board_no: of starter.api.Board

문제상황 : Spring Data가 제공하는 @Query 추가하고 애플리케이션 실행하면 오류 발생

  • @Query Annotation 사용
  • public interface BoardRepository
    Query(SELECT b.board_no FROM Board b ORDER BY b.board_no DESC )
    Collection<Board> getBoardNo;

  • Query Annotation

    • org.springframework.data.annotation.QueryAnnotation

문제해결 : 컬럼 매핑한 필드명으로 컬럼 값을 변경

  • 잘못된 사용 : 실제 테이블 컬럼 명을 사용하여 @Query SQL 작성
    • "SELECT b.board_no FROM Board b ORDER BY b.board_no DESC"
  • 올바른 사용 : 컬럼 매핑한 필드 명을 사용하여 @Query SQL 작성

    • "SELECT b.no FROM Board b ORDER BY b.no DESC"
  • Board Class

    • @Column(name = "board_no")
      private Long no;
  • board_no 컬럼을 매핑한 필드명 no 사용하고 있어 위 내용의 잘못된 사용방법으로 쿼리 작성하는 경우 문제가 발생했다.

  • 쿼리문 컬럼 값을 컬럼 매핑한 필드 명으로 변경하고 애플리케이션 실행하니 정상적으로 실행된 것을 확인했다.

정리하며 : 확인을 통한 확신이 있어야 한다.

  • 이슈가 발생하고 충분히 금방 해결이 가능한 문제였다.
  • 시간이 오래 걸린 이유는 확인을 통한 확신 없이 섣불리 해당 이슈를 다른 원인으로 의심하기 시작하면서 문제가 되었다.
  • 실제 사용하지도 않은 Querydsl 로 문제의 범위를 확장하며, 설정 확인에 많은 시간을 소모했다.
  • Querydsl 정확히 알지 못한 상태로 사용을 시도했던 것이 문제였다.
  • 기능을 사용하고 싶다면 정확히 알고 사용하자.
  • 문제 발생 원인이 무엇이었는지 확인하는 과정이 끝나기 전까지 다른 문제를 포함하지 않도록 하자.
  • @Query 어노테이션을 외부 라이브러리 항목에서 확인해보니 Spring Data 에서 제공하는 것을 확인했다.
    • org.sprignframework.data.spring-data-commons
      org.springframework.data.annotation
      QueryAnnotation
  • Querydsl 문제가 아닌 것이 밝혀졌으며, 표시된 오류 내용을 통해 SQL문을 다시 확인하는 과정에서 문제를 발견하였고 쿼리 수정 후 해결되었다.
%23%20@Query%20%3A%20QueryException%20could%20not%20resolve%20property%20%3A%20column%20of%20entity%20%23%0A%0A@%28%5B%uBE14%uB85C%uADF8%5D%29%5B%uD2F0%uC2A4%uD1A0%uB9AC%5D%0A%0A%23%23%23%20%uBB38%uC81C%uBC1C%uC0DD%20%3A%20%20%uD2B9%uC815%20%uD328%uD0A4%uC9C0%20%uACBD%uB85C%uC5D0%20%uC788%uB294%20entity%20board_no%20%uCEEC%uB7FC%20%uCC3E%uC744%20%uC218%20%uC5C6%uB2E4%uB294%20%uC624%uB958%20%uBC1C%uC0DD%20%23%23%23%0A-%20%60%60%60%20%uC624%uB958%20%3A%20QueryException%20could%20not%20resolve%20property%20%3A%20board_no%3A%20of%20starter.api.Board%20%60%60%60%0A%0A%0A%23%23%23%20%uBB38%uC81C%uC0C1%uD669%20%3A%20Spring%20Data%uAC00%20%uC81C%uACF5%uD558%uB294%20@Query%20%uCD94%uAC00%uD558%uACE0%20%uC560%uD50C%uB9AC%uCF00%uC774%uC158%20%uC2E4%uD589%uD558%uBA74%20%uC624%uB958%20%uBC1C%uC0DD%20%23%23%23%0A-%20@Query%20Annotation%20%uC0AC%uC6A9%0A-%20%60%60%60public%20interface%20BoardRepository%0A@Query%28SELECT%20b.board_no%20FROM%20Board%20b%20ORDER%20BY%20b.board_no%20DESC%20%29%0ACollection%3CBoard%3E%20getBoardNo%3B%20%60%60%60%0A%0A-%09@Query%20Annotation%0A%09-%20%60%60%60%20org.springframework.data.annotation.QueryAnnotation%20%60%60%60%0A%0A%0A%23%23%23%20%uBB38%uC81C%uD574%uACB0%20%3A%20%uCEEC%uB7FC%20%uB9E4%uD551%uD55C%20%uD544%uB4DC%uBA85%uC73C%uB85C%20%uCEEC%uB7FC%20%uAC12%uC744%20%uBCC0%uACBD%20%23%23%23%0A-%20%uC798%uBABB%uB41C%20%uC0AC%uC6A9%20%3A%20%uC2E4%uC81C%20%uD14C%uC774%uBE14%20%uCEEC%uB7FC%20%uBA85%uC744%20%uC0AC%uC6A9%uD558%uC5EC%20@Query%20SQL%20%uC791%uC131%0A%09-%20%60%60%60%22SELECT%20b.board_no%20FROM%20Board%20b%20ORDER%20BY%20b.board_no%20DESC%22%60%60%60%0A-%20%uC62C%uBC14%uB978%20%uC0AC%uC6A9%20%3A%20**%uCEEC%uB7FC%20%uB9E4%uD551%uD55C%20%uD544%uB4DC%20%uBA85**%uC744%20%uC0AC%uC6A9%uD558%uC5EC%20@Query%20SQL%20%uC791%uC131%0A%09-%20%60%60%60%20%22SELECT%20b.no%20FROM%20Board%20b%20ORDER%20BY%20b.no%20DESC%22%60%60%60%0A%0A-%20Board%20Class%0A%09-%20%60%60%60%20@Column%28name%20%3D%20%22board_no%22%29%0A%09%20private%20Long%20no%3B%60%60%60%0A%0A-%20board_no%20%uCEEC%uB7FC%uC744%20%uB9E4%uD551%uD55C%20%uD544%uB4DC%uBA85%20no%20%uC0AC%uC6A9%uD558%uACE0%20%uC788%uC5B4%20%uC704%20%uB0B4%uC6A9%uC758%20%uC798%uBABB%uB41C%20%uC0AC%uC6A9%uBC29%uBC95%uC73C%uB85C%20%uCFFC%uB9AC%20%uC791%uC131%uD558%uB294%20%uACBD%uC6B0%20%uBB38%uC81C%uAC00%20%uBC1C%uC0DD%uD588%uB2E4.%0A%0A-%20%uCFFC%uB9AC%uBB38%20%uCEEC%uB7FC%20%uAC12%uC744%20%uCEEC%uB7FC%20%uB9E4%uD551%uD55C%20%uD544%uB4DC%20%uBA85%uC73C%uB85C%20%uBCC0%uACBD%uD558%uACE0%20%uC560%uD50C%uB9AC%uCF00%uC774%uC158%20%uC2E4%uD589%uD558%uB2C8%20%uC815%uC0C1%uC801%uC73C%uB85C%20%uC2E4%uD589%uB41C%20%uAC83%uC744%20%uD655%uC778%uD588%uB2E4.%20%20%0A%0A%0A%23%23%23%20%uC815%uB9AC%uD558%uBA70%20%3A%20%uD655%uC778%uC744%20%uD1B5%uD55C%20%uD655%uC2E0%uC774%20%uC788%uC5B4%uC57C%20%uD55C%uB2E4.%0A%0A-%20%uC774%uC288%uAC00%20%uBC1C%uC0DD%uD558%uACE0%20%uCDA9%uBD84%uD788%20%uAE08%uBC29%20%uD574%uACB0%uC774%20%uAC00%uB2A5%uD55C%20%uBB38%uC81C%uC600%uB2E4.%0A-%20%uC2DC%uAC04%uC774%20%uC624%uB798%20%uAC78%uB9B0%20%uC774%uC720%uB294%20%uD655%uC778%uC744%20%uD1B5%uD55C%20%uD655%uC2E0%20%uC5C6%uC774%20%uC123%uBD88%uB9AC%20%uD574%uB2F9%20%uC774%uC288%uB97C%20%uB2E4%uB978%20%uC6D0%uC778%uC73C%uB85C%20%uC758%uC2EC%uD558%uAE30%20%uC2DC%uC791%uD558%uBA74%uC11C%20%uBB38%uC81C%uAC00%20%uB418%uC5C8%uB2E4.%0A-%20%20%uC2E4%uC81C%20%uC0AC%uC6A9%uD558%uC9C0%uB3C4%20%uC54A%uC740%20Querydsl%20%uB85C%20%uBB38%uC81C%uC758%20%uBC94%uC704%uB97C%20%uD655%uC7A5%uD558%uBA70%2C%20%uC124%uC815%20%uD655%uC778%uC5D0%20%uB9CE%uC740%20%uC2DC%uAC04%uC744%20%uC18C%uBAA8%uD588%uB2E4.%0A-%20**Querydsl%20%uC815%uD655%uD788%20%uC54C%uC9C0%20%uBABB%uD55C%20%uC0C1%uD0DC%uB85C%20%uC0AC%uC6A9%uC744%20%uC2DC%uB3C4%uD588%uB358%20%uAC83%uC774%20%uBB38%uC81C**%uC600%uB2E4.%0A-%20%uAE30%uB2A5%uC744%20%uC0AC%uC6A9%uD558%uACE0%20%uC2F6%uB2E4%uBA74%20%uC815%uD655%uD788%20%uC54C%uACE0%20%uC0AC%uC6A9%uD558%uC790.%0A-%20%uBB38%uC81C%20%uBC1C%uC0DD%20%uC6D0%uC778%uC774%20%uBB34%uC5C7%uC774%uC5C8%uB294%uC9C0%20**%uD655%uC778%uD558%uB294%20%uACFC%uC815%uC774%20%uB05D%uB098%uAE30%20%uC804%uAE4C%uC9C0%20%uB2E4%uB978%20%uBB38%uC81C%uB97C%20%uD3EC%uD568%uD558%uC9C0%20%uC54A%uB3C4%uB85D%20%uD558%uC790.**%0A-%20**@Query%20%uC5B4%uB178%uD14C%uC774%uC158%uC744%20%uC678%uBD80%20%uB77C%uC774%uBE0C%uB7EC%uB9AC%20%uD56D%uBAA9%uC5D0%uC11C%20%uD655%uC778%uD574%uBCF4%uB2C8%20Spring%20Data%20%uC5D0%uC11C%20%uC81C%uACF5%uD558%uB294%20%uAC83%uC744%20%uD655%uC778**%uD588%uB2E4.%0A%09-%20%60%60%60org.sprignframework.data.spring-data-commons%0Aorg.springframework.data.annotation%0AQueryAnnotation%60%60%60%0A-%20%20Querydsl%20%uBB38%uC81C%uAC00%20%uC544%uB2CC%20%uAC83%uC774%20%uBC1D%uD600%uC84C%uC73C%uBA70%2C%20%uD45C%uC2DC%uB41C%20%uC624%uB958%20%uB0B4%uC6A9%uC744%20%uD1B5%uD574%20SQL%uBB38%uC744%20%uB2E4%uC2DC%20%uD655%uC778%uD558%uB294%20%uACFC%uC815%uC5D0%uC11C%20%uBB38%uC81C%uB97C%20%uBC1C%uACAC%uD558%uC600%uACE0%20%uCFFC%uB9AC%20%uC218%uC815%20%uD6C4%20%uD574%uACB0%uB418%uC5C8%uB2E4.


관련글 더보기

댓글 영역