Java/JPA

Enum - Converter

blogger903 2024. 7. 31. 22:39
728x90

JPA에서 코드로는 Enum 클래스로 작성하고 MySQL 에서 정수형으로 값을 매핑하고 싶을때 Converter를 사용합니다


import javax.persistence.*

enum class Status(val value: Int) {
    ACTIVE(1), INACTIVE(0);

    companion object {
        fun fromValue(value: Int): Status = values().first { it.value == value }
    }
}

@Converter
class StatusConverter : AttributeConverter<Status, Int> {
    override fun convertToDatabaseColumn(attribute: Status?): Int? {
        return attribute?.value
    }

    override fun convertToEntityAttribute(dbData: Int?): Status? {
        return dbData?.let { Status.fromValue(it) }
    }
}

@Entity
class User(
    @Id
    val id: Long,

    @Convert(converter = StatusConverter::class)
    val status: Status
)