10

Exposedで提供されている例に従って、作成されたテーブル/データを作成するトランザクションの外部で読み取ることができません。h2-in-memory データベースを使用しています。

例外は次のとおりです。

Exception in thread "main" org.h2.jdbc.JdbcSQLException: Table "CITIES" not found; SQL statement:

commit の呼び出しを追加しましたが、これは役に立ちません。github へのリンクの例のように、データを作成するトランザクション内でデータを読み取ると、正常に動作します。ここにそれの単純化されたバージョンがあります:

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

    transaction {
        create(Cities)

        City.new {
            name = "St. Petersburg"
        }

        println("Cities: ${City.all().joinToString { it.name }}")
        //I have added this commit here
        commit()
    }
    //I want to read the data outside the transaction, but it does not work
    transaction {
        println("Cities: ${City.all().joinToString { it.name }}")

    }
}

データを永続化するにはどうすればよいですか?

追加するlogger.addLogger(StdOutSqlLogger)と、次の出力が得られます。

SQL: CREATE TABLE IF NOT EXISTS CITIES (ID INT AUTO_INCREMENT PRIMARY KEY, NAME VARCHAR(50) NOT NULL)
SQL: INSERT INTO CITIES (NAME) VALUES ('St. Petersburg')
SQL: SELECT CITIES.ID, CITIES.NAME FROM CITIES
4

3 に答える 3