如何通过Kotlin使用Postgresql枚举类型公开的ORM?
问题描述:
我已经添加了一些Postgresql类型以Exposed作为扩展。它有两种现成的类型,名称分别为enumeration
和enumerationByName
。我测试了这两个都没有成功将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
答
你应该申报状态列如下:
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
}
也许是*大小写敏感*?尝试将元素重命名为“打开”,“关闭”等,或者从数据库中读取一些大写的名字。 – hotkey
@hotkey在问题出现之前,它是如此!不起作用! – Kamyar
你的“门票”对象在哪里?你如何申报身份? –