작성
·
84
0
package hellojpa;
public enum RoleType {
USER , ADMIN, GUEST , CEO==추가한 데이터(테이블 생성 후)
}
///////
try {
Member member1 = new Member();
member1.setId(5L);
member1.setUsername("하하");
member1.setRoleType(RoleType.CEO);
////////////
<property name="hibernate.hbm2ddl.auto" value="update" />
이러한설정의 상태입니다 영한님도 auto가 update로 되어있는것 같은데
저는 ENUM의 컬럼을 추가하고 적용해서 DB를 생성하려하면 오류가발생합니다
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. DG Y님. JPA에서 ENUM 타입을 다룰 때 발생하는 문제로 보입니다. 먼저, ENUM 타입의 항목을 추가하면서 오류가 발생하는 상황을 설명드려볼게요.
ENUM 타입에 항목을 추가할 때, JPA의 hbm2ddl.auto
설정이 update
로 되어 있어도 자동으로 데이터베이스의 스키마를 갱신해주지 않을 수 있습니다. JPA는 기존에 생성된 테이블 및 컬럼에 대한 변경에는 한계가 있으며, 이러한 변동 사항은 수동으로 관리해주는 것이 안전할 수 있습니다.
관련 유사 질문 및 답변 링크:
1. Enum 타입 대신 1:1 매핑
- 이 답변에서는 ENUM 대신 1:1 매핑으로 관리했을 때의 장단점을 설명하고 있습니다. 개념을 이해하는 데 도움이 될 것입니다.
ENUM 타입의 항목 추가 시 주의점:
- JPA의 update
옵션은 스키마 자체의 변경(새로운 열 추가 또는 열의 제거)에는 대응하지 않는 경우가 많습니다.
- 새로운 ENUM 항목 추가는 JPA에서 스키마를 자동 갱신하지 않기에 직접 DB 스키마를 변경하거나, 엔티티의 변경사항 포착을 위해 수동으로 DDL 스크립트를 실행할 필요가 있습니다.
때로는 이러한 점이 자동화되지 않기 때문에 수동으로 데이터베이스 스키마를 조정하고 변경사항에 대한 DDL 스크립트를 실행해주는 것이 안전할 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.