如何通过Kotlin使用Postgresql枚举类型公开的ORM?

问题描述:

我已经添加了一些Postgresql类型以Exposed作为扩展。它有两种现成的类型,名称分别为enumerationenumerationByName。我测试了这两个都没有成功将postgre枚举类型映射到Kotlin枚举类。在这两种读取和写入它会引发错误如何通过Kotlin使用Postgresql枚举类型公开的ORM?

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 
+0

也许是*大小写敏感*?尝试将元素重命名为“打开”,“关闭”等,或者从数据库中读取一些大写的名字。 – hotkey

+0

@hotkey在问题出现之前,它是如此!不起作用! – Kamyar

+0

你的“门票”对象在哪里?你如何申报身份? –

你应该申报状态列如下:

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 
}