공부/에러노트

[Spring] Hibernate Enum 사용시 type 문제

aerhergag0 2024. 1. 31. 19:43

문제발생

 

- Hibernate 6 이후 

Schema-validation: wrong column type encountered in column [status] in table [user];
found [varchar (Types#VARCHAR)], but expecting [enum ('registered','unregistered') (Types#ENUM)]

 

다음과 같은 문제 발생

 

 

class UserEntity, enum UserStatus

@Entity
@Table(name = "user")
public class UserEntity extends BaseEntity {
...

	@Column(nullable = false, length = 50)
	@Enumerated(EnumType.STRING)
	private UserStatus status;
    ...

 

@AllArgsConstructor
public enum UserStatus {

	REGISTERED("등록"),
	UNREGISTERED("미등록"),
	;

	private final String description;
}

 

 


내가 해결한 방법

 

@Entity
@Table(name = "user")
public class UserEntity extends BaseEntity {
...

	@Column(nullable = false, length = 50,
	  columnDefinition = "varchar(50) default 'REGISTERED'")
	@Enumerated(EnumType.STRING)
	private UserStatus status;
	...

 

@Column의 columnDefinition으로 강제 타입변환

 

 

더 좋은 방법을 찾으면 기록할것