Intellij idea 科特林暴露';他们的维基上自己的例子不起作用

Intellij idea 科特林暴露';他们的维基上自己的例子不起作用,intellij-idea,kotlin,h2,kotlin-exposed,Intellij Idea,Kotlin,H2,Kotlin Exposed,此代码直接从中提取,但不起作用。奇怪和沮丧的是,我无法让它工作,因为我有一个很酷的项目,需要使用RDBMS的想法。我错过了什么?它坏了吗 import org.jetbrains.exposed.sql.StdOutSqlLogger import org.jetbrains.exposed.sql.Database import org.jetbrains.exposed.sql.Table import org.jetbrains.exposed.sql.insert import org.

此代码直接从中提取,但不起作用。奇怪和沮丧的是,我无法让它工作,因为我有一个很酷的项目,需要使用RDBMS的想法。我错过了什么?它坏了吗

import org.jetbrains.exposed.sql.StdOutSqlLogger
import org.jetbrains.exposed.sql.Database
import org.jetbrains.exposed.sql.Table
import org.jetbrains.exposed.sql.insert
import org.jetbrains.exposed.sql.transactions.transaction
import org.jetbrains.exposed.sql.selectAll

fun main(args: Array<String>) {
    Database.connect("jdbc:h2:mem:test", driver = "org.h2.Driver")

    transaction {
        logger.addLogger(StdOutSqlLogger)

        val stPeteId = Cities.insert {
            it[name] = "St. Petersburg"
        } get Cities.id

        println("Cities: ${Cities.selectAll()}")
    }
}

// Table definition
object Cities : Table() {
    val id = integer("id").autoIncrement().primaryKey()
    val name = varchar("name", 50)
}
// Entity definition
data class City(
        val id: Int,
        val name: String
)
import org.jetbrains.exposed.sql.StdOutSqlLogger
导入org.jetbrains.exposed.sql.Database
导入org.jetbrains.exposed.sql.Table
导入org.jetbrains.exposed.sql.insert
导入org.jetbrains.exposed.sql.transactions.transaction
导入org.jetbrains.exposed.sql.selectAll
趣味主线(args:Array){
Database.connect(“jdbc:h2:mem:test”,driver=“org.h2.driver”)
交易{
logger.addLogger(StdOutSqlLogger)
val stPeteId=Cities.insert{
it[名称]=“圣彼得堡”
}获取城市id
println(“城市:${Cities.selectAll()}”)
}
}
//表定义
目标城市:表(){
val id=integer(“id”).autoIncrement().primaryKey()
val name=varchar(“name”,50)
}
//实体定义
数据级城市(
val id:Int,
val名称:String
)
在Intellij中运行时,我收到以下错误消息:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Exception in thread "main" org.h2.jdbc.JdbcSQLException: Table "CITIES" not found; SQL statement:
INSERT INTO CITIES (NAME) VALUES (?) [42102-196]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:345)
    at org.h2.message.DbException.get(DbException.java:179)
    at org.h2.message.DbException.get(DbException.java:155)
    at org.h2.command.Parser.readTableOrView(Parser.java:5552)
    at org.h2.command.Parser.readTableOrView(Parser.java:5529)
    at org.h2.command.Parser.parseInsert(Parser.java:1062)
    at org.h2.command.Parser.parsePrepared(Parser.java:417)
    at org.h2.command.Parser.parse(Parser.java:321)
    at org.h2.command.Parser.parse(Parser.java:293)
    at org.h2.command.Parser.prepareCommand(Parser.java:258)
    at org.h2.engine.Session.prepareLocal(Session.java:578)
    at org.h2.engine.Session.prepareCommand(Session.java:519)
    at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1204)
    at org.h2.jdbc.JdbcPreparedStatement.<init>(JdbcPreparedStatement.java:73)
    at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:288)
    at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:1188)
    at org.jetbrains.exposed.sql.statements.InsertStatement.prepared(InsertStatement.kt:58)
    at org.jetbrains.exposed.sql.statements.Statement.executeIn$exposed(Statement.kt:46)
    at org.jetbrains.exposed.sql.Transaction.exec(Transaction.kt:103)
    at org.jetbrains.exposed.sql.Transaction.exec(Transaction.kt:97)
    at org.jetbrains.exposed.sql.statements.Statement.execute(Statement.kt:27)
    at org.jetbrains.exposed.sql.QueriesKt.insert(Queries.kt:43)
    at MainKt$main$1.invoke(Main.kt:14)
    at MainKt$main$1.invoke(Main.kt)
    at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.inTopLevelTransaction(ThreadLocalTransactionManager.kt:92)
    at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.transaction(ThreadLocalTransactionManager.kt:64)
    at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.transaction(ThreadLocalTransactionManager.kt:55)
    at MainKt.main(Main.kt:11)

Process finished with exit code 1
SLF4J:未能加载类“org.SLF4J.impl.StaticLoggerBinder”。
SLF4J:默认为无操作(NOP)记录器实现
SLF4J:参见http://www.slf4j.org/codes.html#StaticLoggerBinder 详情请参阅。
线程“main”org.h2.jdbc.JdbcSQLException中的异常:未找到表“CITIES”;SQL语句:
插入城市(名称)值(?)[42102-196]
位于org.h2.message.DbException.getJdbcSQLException(DbException.java:345)
位于org.h2.message.DbException.get(DbException.java:179)
位于org.h2.message.DbException.get(DbException.java:155)
位于org.h2.command.Parser.readTableOrView(Parser.java:5552)
位于org.h2.command.Parser.readTableOrView(Parser.java:5529)
位于org.h2.command.Parser.parseInsert(Parser.java:1062)
位于org.h2.command.Parser.parsePrepared(Parser.java:417)
位于org.h2.command.Parser.parse(Parser.java:321)
位于org.h2.command.Parser.parse(Parser.java:293)
位于org.h2.command.Parser.prepareCommand(Parser.java:258)
位于org.h2.engine.Session.prepareLocal(Session.java:578)
位于org.h2.engine.Session.prepareCommand(Session.java:519)
位于org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1204)
在org.h2.jdbc.JdbcPreparedStatement。(JdbcPreparedStatement.java:73)
在org.h2.jdbc.JdbcConnection.prepareStatement上(JdbcConnection.java:288)
位于org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:1188)
位于org.jetbrains.exposed.sql.statements.InsertStatement.prepared(InsertStatement.kt:58)
位于org.jetbrains.exposed.sql.statements.Statement.executeIn$exposed(Statement.kt:46)
位于org.jetbrains.exposed.sql.Transaction.exec(Transaction.kt:103)
位于org.jetbrains.exposed.sql.Transaction.exec(Transaction.kt:97)
位于org.jetbrains.exposed.sql.statements.Statement.execute(Statement.kt:27)
位于org.jetbrains.exposed.sql.queryskt.insert(querys.kt:43)
在MainKt$main$1.invoke(main.kt:14)
在MainKt$main$1.invoke(main.kt)
位于org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.inTopLevelTransaction(ThreadLocalTransactionManager.kt:92)
位于org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.transaction(ThreadLocalTransactionManager.kt:64)
位于org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.transaction(ThreadLocalTransactionManager.kt:55)
在MainKt.main(main.kt:11)
进程已完成,退出代码为1

我认为他们的示例中缺少create语句。DAO示例似乎有一些您所指向的示例没有的语句

尝试添加create语句:

fun main(args: Array<String>) {
    Database.connect("jdbc:h2:mem:test", driver = "org.h2.Driver")

    transaction {
        logger.addLogger(StdOutSqlLogger)

        // ADD THIS - Create tables
        create (Cities)

        val stPeteId = Cities.insert {
            it[name] = "St. Petersburg"
        } get Cities.id

        println("Cities: ${Cities.selectAll()}")
    }
}
fun main(args:Array){
Database.connect(“jdbc:h2:mem:test”,driver=“org.h2.driver”)
交易{
logger.addLogger(StdOutSqlLogger)
//添加此选项-创建表
创建(城市)
val stPeteId=Cities.insert{
it[名称]=“圣彼得堡”
}获取城市id
println(“城市:${Cities.selectAll()}”)
}
}

如果这行得通,我打赌他们会接受PR作为他们的文档。

我认为他们的示例中缺少create语句。DAO示例似乎有一些您所指向的示例没有的语句

尝试添加create语句:

fun main(args: Array<String>) {
    Database.connect("jdbc:h2:mem:test", driver = "org.h2.Driver")

    transaction {
        logger.addLogger(StdOutSqlLogger)

        // ADD THIS - Create tables
        create (Cities)

        val stPeteId = Cities.insert {
            it[name] = "St. Petersburg"
        } get Cities.id

        println("Cities: ${Cities.selectAll()}")
    }
}
fun main(args:Array){
Database.connect(“jdbc:h2:mem:test”,driver=“org.h2.driver”)
交易{
logger.addLogger(StdOutSqlLogger)
//添加此选项-创建表
创建(城市)
val stPeteId=Cities.insert{
it[名称]=“圣彼得堡”
}获取城市id
println(“城市:${Cities.selectAll()}”)
}
}
如果这行得通,我打赌他们会接受他们文档的PR