Я добавил некоторые типы Postgresql для Exposed как расширения. Он имеет два готовых типа с именем enumeration
и enumerationByName
. Я тестировал оба из них без успеха для сопоставления типа перечисления типа postgre с классом enum класса Kotlin. При чтении и записи он вызывает ошибку
enum class TicketStatus(val status: String) { Open("open"), Close("close"), InProgress("in_progress") } class Ticket(id: EntityID<UUID>) : Entity<UUID>(id) { companion object : EntityClass<UUID, Ticket>(Tickets) var geom by Tickets.geom var description by Tickets.description var status by Tickets.status var createdAt by Tickets.createdAt var updatedAt by Tickets.updatedAt var owner by Tickets.owner }
При чтении:
java.lang.IllegalStateException: open is not valid for enum TicketStatus
Вы должны объявить столбец статуса следующим образом:
object Tickets: Table() { val status = enumeration("status", TicketStatus::class.java) // will create integer column val status = enumerationByName("status", TicketStatus::class.java) // will create varchar with TicketStatus names }