Tuesday, January 22, 2019

JPA에서 @Query와 JOIN 사용 시 발생하는 Validation 오류 해결 방법

JPA에서 @Query와 JOIN 사용 시 발생하는 Validation 오류 해결 방법

JPA는 복잡한 데이터베이스 질의를 처리하기 위한 다양한 기능을 제공합니다. 그 중 @Query 어노테이션은 SQL 또는 HQL 질의를 사용할 수 있게 해주는 강력한 도구입니다. 하지만 JPA에 익숙하지 않은 개발자들에게는 이러한 기능들이 때때로 혼란을 줄 수 있습니다.

문제 상황: JOIN 사용 시 Validation 오류

JOIN 연산을 이용해야 하는 상황에서, 워크벤치(MySQL Workbench) 등의 도구로 테스트했을 때 잘 작동하던 쿼리가 JPA에서는 'Validation failed for query for method public abstract java.util.List' 등의 오류 메시지와 함께 작동하지 않는 경우가 있습니다.

해결 방법: Entity 클래스 패키지명 전부 명시하기

JPA의 내부 동작 원리를 완전히 이해하지 못하더라도, 문제를 해결하는 방법은 존재합니다. 바로 Entity 클래스에 패키지명을 전부 명시하는 것입니다. 주의할 점은, 질의를 시작하는 Repository에 속한 Entity 클래스는 패키지명이 필요 없다는 점입니다.


예: select * from Entity1 join com.example.Entity2

위 예시처럼, 'Entity1'은 그대로 쓰고 'Entity2' 부분에 패키지명인 'com.example.Entity2'를 적어주면 됩니다. 이렇게 하면 해당 오류 없이 정상적으로 쿼리가 실행됩니다.


0 개의 댓글:

Post a Comment