>데이터 베이스 >MySQL 튜토리얼 >@Column(columnDefinition) 및 @Enumerated(EnumType.STRING)을 사용하여 Hibernate에서 열거형을 문자열로 유지하는 방법은 무엇입니까?

@Column(columnDefinition) 및 @Enumerated(EnumType.STRING)을 사용하여 Hibernate에서 열거형을 문자열로 유지하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-10-30 04:47:02297검색

How to Persist Enums as Strings in Hibernate with @Column(columnDefinition) and @Enumerated(EnumType.STRING)?

Enum으로서의 Hibernate Enum 지속성

Hibernate 엔터티에서 enum을 정의할 때 지속성 메커니즘이 데이터베이스 열의 데이터 유형과 일치하는지 확인하는 것이 중요합니다. 귀하의 경우 데이터베이스 열 "성별"은 '남성' 및 '여성' 값을 갖는 열거형 유형으로 정의됩니다.

발생하는 문제는 예상되는 데이터 유형 간의 불일치로 인해 발생할 수 있습니다. 최대 절전 모드 및 데이터베이스 열의 실제 데이터 유형입니다. 기본적으로 Hibernate는 열거형 값이 정수로 유지되기를 기대하지만 데이터베이스 열은 열거형으로 정의됩니다.

이 불일치를 해결하려면 다음을 사용하여 열거형을 문자열 값으로 유지하도록 Hibernate에 명시적으로 지시할 수 있습니다. @Column(columnDefinition) 주석. 이 주석은 열을 생성하는 데 사용되는 DDL(데이터 정의 언어)을 정의합니다. 귀하의 경우 열 정의를 다음과 같이 지정할 수 있습니다.

@Column(columnDefinition = "enum('male','female')")

또한 열거형이 문자열 값으로 유지되어야 함을 나타내기 위해 열거형 필드에 @Enumerated(EnumType.STRING) 주석을 달아야 합니다.

이 업데이트된 코드 조각은 문제를 해결해야 합니다.

@Column(columnDefinition = "enum('male','female')")
@Enumerated(EnumType.STRING)
private Gender gender;

열 정의와 열거형 유형을 명시적으로 지정하면 Hibernate가 데이터 유형과 일치하는 문자열로 열거형을 유지하도록 강제할 수 있습니다. 데이터베이스 열의 이렇게 하면 발생한 오류를 방지하고 열거형 데이터의 올바른 지속성을 보장할 수 있습니다.

위 내용은 @Column(columnDefinition) 및 @Enumerated(EnumType.STRING)을 사용하여 Hibernate에서 열거형을 문자열로 유지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.