[오늘의 에러] JPA에서 UUID를 id로 사용할 때 발생한 문제

서지혜·2023년 4월 19일
0

TIL

목록 보기
3/22

기록일 : 2023년 04월 19일
해결 난이도 : 🌞 쉬움


🧨 개요

Spring Boot, JPA, MySQL을 사용하는 프로젝트를 진행할 때 발생한 문제이다.

Coffee Entity를 class로 만들 때 ID 타입을 UUID로 지정해서 데이터베이스에 coffee 테이블이 생성되었다. 이후에 데이터베이스의 coffee 테이블에서 값을 ID로 구분하여 가져오려고 하였다.

SELECT * FROM `coffee` c WHERE c.cid = '{uuid 값}';

그런데 올바른 cid값임에도 WHERE 절에서 UUID값을 제대로 구분하지 못하여 null이 반환되는 문제가 발생했다.

🧨 해결

Binary 타입 길이의 문제였다.
Coffee Entity 클래스 cid 필드에 정확하게 coffee 테이블 필드 타입을 명시하지 않았는데, JPA를 통해 생성된 테이블의 필드의 타입은 Binary(255)였다. 그러나 UUID의 길이는 16byte였기 떄문에 에러가 발생한 것이다.
따라서 아래와 같이 cid 필드에 coffee테이블 필드 타입을 명시해 주었다.

위와 같이 코드를 수정하고 DB에 다시 테이블을 생성하니, SELECT 쿼리의 결과가 잘 반환됨을 확인하였다.

참고 블로그

profile
개발자가 되고 싶은 감자

0개의 댓글

관련 채용 정보