Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

돌맹이

[JPA] Reason: Validation failed for query for method public abstract java.util.List 오류 해결 본문

programming/JPA

[JPA] Reason: Validation failed for query for method public abstract java.util.List 오류 해결

오택 2023. 6. 12. 13:52

# 코드

 

public interface MemberRepository extends CrudRepository<Member, String>{
	
	@Query("SELECT m.uid, count(p) FROM Member m LEFT OUTER JOIN Profile p " 
	+ "On m.uid = p.member WHERE m.uid = ?1 GROUP BY m")
	public List<Object[]> getMemberWithProfileCount(String uid);

}

 

# 오류 발생

 

MemberRepository를 위와 같이 작성했을 때, 

다음과 같은 오류가 발생했다.

Error creating bean with name 'memberRepository' defined in org.zerock.persistence.MemberRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Could not create query for public abstract java.util.List org.zerock.persistence.MemberRepository.getMemberWithProfileCount(java.lang.String); Reason: Validation failed for query for method public abstract java.util.List org.zerock.persistence.MemberRepository.getMemberWithProfileCount(java.lang.String)

 

# 해결 방법

 

JPQL 방식을 버리고 nativeQuery 방식으로 바꿔서 해결

public interface MemberRepository extends CrudRepository<Member, String>{
	
	@Query(value = "SELECT m.uid, count(fname) FROM tbl_members m LEFT OUTER JOIN tbl_profile p " 
	+ "On m.uid = p.member_uid WHERE m.uid = ?1 GROUP BY m.uid", nativeQuery = true)
	public List<Object[]> getMemberWithProfileCount(String uid);

}