Kotlin Exposed не совершает транзакции

Следуя примеру, представленному в Exposed, я не могу прочитать созданные таблицы / данные за пределами созданной транзакции. Я использую базу данных h2-in-memory.

Исключение составляет:

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

Я добавил вызов для фиксации, но это не помогает. Если я прочитаю данные в транзакции, создающей данные, как в примере по ссылке на 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 

    Он совершает транзакцию. Проблема в том, что когда база данных в памяти закрыта, она удаляется и база данных в памяти закрывается при следующих обстоятельствах:

    По умолчанию H2 закрывает базу данных, когда последнее соединение закрыто

    Источник

    Вот диаграмма, поэтому легче понять, что происходит шаг за шагом (когда база данных закрыта, она полностью удалена)

    диаграмма

    Самое простое решение – просто использовать фактическую файловую базу данных вместо памяти.

    Изменение базы данных из памяти в Database.connect("jdbc:h2:~/test", driver = "org.h2.Driver") проблему.

    Похоже, вы отошли от памяти H2, чтобы решить вашу проблему. Имейте в виду, что корень вашей первоначальной проблемы, вероятно, был вызван тем, что H2 нужно поддерживать ваши таблицы для жизни JVM:

    JDBC: h2: MEM: тест; DB_CLOSE_DELAY = -1

    далее поясняется здесь: H2 in-memory database. Таблица не найдена

    Intereting Posts
    Есть ли лучший способ декодировать html прямо на Android? Kotlin: Сравнить значения свойств различных целевых объектов с (out) отражением Что означает ключевое слово header / impl в котлине? Jackson @ JsonIgnoreProperties несколько полей с Kotlin Как получить / положить Kotlin Внутренняя карта или Карта карты Настройка «build.gradle» для модуля Kotlin в Android Studio Должен ли я использовать демо-код ARCore или написать его самостоятельно? RxJava (Kotlin), Observable.amb и PublishSubject не стреляют Kotlin с Android: базовые классы и расширения для Android Kotlin Инициализация RecyclerView с привязкой данных Android в Котлине вызывает ошибку. Что я делаю не так? Из памяти с помощью волейбола в Котлине Предварительный просмотр Anko DSL показывает только один вид Out-projected type «ArrayList <*>» запрещает использование «public open fun add (index: Int, element: E): Unit, определенный в java.util.ArrayList ' Не может быть возврата внутри Runnable SAM в Котлин? Как создать несколько разделов текстовых просмотров с помощью нескольких касаний?