본문 바로가기
JavaScript/Spring

[Java/Spring] Spring MongoDB 연동 및 데이터 읽기- 언더바(_) 문제 repository(DAO)

by Alkaloid 2022. 11. 18.
반응형

데이터하나 읽는데 엄청난 삽질을 하게 되었습니다.

 

시도.

DAO에서 findBy를 이용하여 필드에 해당하는 값을 가져오려고 시도를 하였습니다.

User findBy~(String 필드명);

구조로 MongoDB에서 필드명은 user_id 였습니다.

즉. user_id가 일치하는 값을 몽고디비에서 가져오는것이 목표.

 

오류.

필드명을 찾을수가 없다.

 

해결.

findBy는 _를 사용하지 못하게 되어있습니다.

언더바(_)는 예약어로 사용되고 있기 때문에 읽지를 못합니다.

그렇기 때문에 필드명이 user_id 라면 User findByUser_id (String user_id ); 라는 구문을 사용하지 못합니다. 

_이 있으면 findByUser까지 밖에 못찾아요.

이부분을 해결하기 위해 @Column 어노테이션을 쓰라는 답이 많았는데, 이상하게 해당 어노테이션이 안써졌습니다.

MongoDb는 어노테이션을 @Document를 써서그런가..? 

아무튼 @Column 어노테이션은 사용이 안되기 때문에 다른 방법을 찾았습니다.

 

_으로 구분자를 지어 필드를 만드는것이 아닌 카멜표기법을 이용하여 필드명을 지어라..

userId로 필드명을 바꾸고 

User findByUserId (String userId);  로 시도하니 잘만 됩니다..

 

MongoDB를 사용하여 필드명을 _으로 지었을때 DAO(repository)에서 사용하는 또 다른 방법을 아시는분은 댓글 달아주시면 감사하겠습니다~ (6시간 삽질의 결과가.. 필드명 변경이라 화가납니다.)

반응형