Error

Error : Encountered a duplicated sql alias [id] during auto-discovery of a native-sql query

walbe0528 2022. 12. 23. 18:39

 

 

에러 내용

Encountered a duplicated sql alias [id] during auto-discovery of a native-sql query; 
nested exception is org.hibernate.loader.custom.NonUniqueDiscoveredSqlAliasException: Encountered a duplicated sql alias [id] during auto-discovery of a native-sql query

 

스프링 부트에서 내가 작성한 쿼리문의 id값을 제대로 인식하지 못한다고 나왔다.

동일한 alias name이 있으면 발생하는 에러라고 한다. 같은 이름이 있어 두 이름에 서로 다른 이름을 부여하면 해결된다고 한다. 

(내가 작성한 쿼리문에서는 id값을 challenge 테이블에서만 사용하는데 왜 제대로 인식하지 못하지? 라는 의문은 여전히 남아있음..)

 

해결 방법

SELECT *  FROM Challenge c LEFT OUTER JOIN ChallengeUser cu on c.id = cu.challenge_id
WHERE c.id NOT IN (SELECT cu.challenge_id FROM ChallengeUser cu WHERE cu.user_id = :userId) ORDER BY c.cur_num DESC;

 

 

그래서 Entity에서 인식하지 못하는 id 필드에 @Column(name="c_id")라고 이름을 지정하고,

쿼리문에서 id를 c_id로 수정해주었다.

SELECT *  FROM Challenge c LEFT OUTER JOIN ChallengeUser cu on c.c_id = cu.challenge_id
WHERE c.c_id NOT IN (SELECT cu.challenge_id FROM ChallengeUser cu WHERE cu.user_id = :userId) ORDER BY c.cur_num DESC;

 

 

참고 : 

https://memo.polypia.net/archives/1214

 

728x90