暴露selectreturn类型

Exposed select return type

我是 ktor 和 Exposed 的新手。 我想写一个 returns Category object by id

的函数

这是我的数据class

@Serializable
data class Category(
val id: Long,
val name: String,
val count: Int
)

这是我的 main 函数

fun main() {
embeddedServer(
    factory = CIO,
    port = 8080,
    host = "0.0.0.0",
    module = {
        install(ContentNegotiation) {
            json()
        }
        configureDependencyInjection()
        configureCategoryRouting()
        configureImageRouting()
        Database.connect(
            url = "jdbc:postgresql://localhost:5432/postgres",
            driver = "org.postgresql.Driver",
            user = "postgres",
            password = "74279744fz"
        )

这是我的函数,应该 return a Category

fun getCategoryById(id: Long): Category {
    val category = transaction {
        Categories.select {
            Categories.id eq id
        }
    }
    return category
}

但是 returned category 不是 Category 而是 Query class.

如何将其转换为Category

您必须将 ResultRow 中的值映射到您的 Category 数据 class。 喜欢:

Categories.select {
   Categories.id eq id
}.map { row ->
  Category(row[Categories.id], row[Categories.name], row[Categories.count])
}

请同时检查 wiki