More than one row with the given identifier was found: for class: nested exception is org.hibernate.HibernateException: More than one row with the given identifier was found: for class:

Yeoonnii·2022년 11월 8일
0

MyBatis

목록 보기
7/10

오류

회원 로그인 시 오류가 발생했다

오류 메시지의 내용은 '지정된 식별자가 있는 행이 두 개 이상 발견되었음' 으로 해석했는데 아무리 봐도 MEMBER 테이블에는 중복된 ID가 존재하지 않았다

또한 오류가 난 곳은 로그인시 SecurityLoginService에서 memberid를 이용해서 DB에서 아이디, 암호, 권한을 꺼내오는 부분이었다

// DB에서 아이디를 이용해서 정보를 가져온다음    
Member member = mRepository.findById(username).orElse(null);

해결

작성한 코드를 확인을 해보니 MEMBERADDRESS간 관계는 1:1 이었는데
DB에 한명의 회원에 여러개의 주소가 추가되어 있었다

JPA는 쿼리 메서드 실행시 해당 엔티티의 매핑관계를 확인한다고 한다
mRepository.findById가 실행되며 ADDRESS 매핑관계와 일치하지 않는 데이터가 존재했기 때문에 생긴 오류였다

매핑관계와 일치하도록 데이터를 수정하자 오류가 해결이 되었다!

매핑관계에 맞도록 백엔드 로직을 작성하였는지,
매핑관계와 일치하도록 DB 데이터가 존재하는지 꼼꼼히 확인해야겠다

0개의 댓글