我们有一个具有自定义值的 Enum 类。出于商业目的,这些值与它们的序数不同,我无法改变。
enum class Role(val value: Int) {
EXECUTOR(1),
MONITOR(3),
ADMIN(5),
companion object {
private val map = Role.values().associateBy(Role::value)
fun fromInt(role: Int) = map[role]
}
}
我们正在使用 JOOQ 和 postgres。我们使用 JOOQ 默认值EnumConverter
将 db 角色整数值转换为对象。
ForcedType()
.withUserType("com.company.enums.Role")
.withEnumConverter(true)
.withIncludeExpression("role"),
但是我们注意到了一个问题——数据库存储了枚举的序数,而不是值。例如我们在角色列中的 db 中看到,db 值为 1,翻译后的 Enum 为 MONITOR,因为 MONITOR 的序数为 1。
我们如何使用 JOOQ 将 Enum 的值存储到 db 中?
谢谢!