Growth & Practice/Today I Learned

[TID] @Enumerated 사용

foreverWon 2025. 10. 1. 17:06
목차

    트러블슈팅

    1. JPA @Enumerated 기본 전략으로 인해 ENUM이 숫자로 저장되는 문제

    에러로그

    found [varchar (Types#VARCHAR)], but expecting [smallint (Types#TINYINT)]

    원인

    JPA에서 @Enumerated 애너테이션을 사용할 때 기본값이 EnumType.ORDINAL이기 때문에, ENUM이 순서 값(숫자)으로 DB에 저장

    이유

    EnumType.ORDINAL은 ENUM의 선언 순서를 정수로 저장하여 성능은 좋지만, ENUM의 순서가 변경되면 데이터 불일치 문제가 발생할 수 있음.

    이를 방지하기 위해 @Enumerated(EnumType.STRING)을 명시하면, ENUM 이름이 문자열로 저장되어 유지보수성과 안정성이 높아짐

    728x90