Slick codegen не дает никакого вывода

Я пытаюсь использовать текущую версию slick и slick-codegen (3.2.0) с базой данных sqlite. Когда я пытаюсь перечислить таблицу, я правильно получаю имена. Однако, когда я пытаюсь создать классы, соответствующие таблицам, я не получаю никаких результатов.

Это работает:

object TableCodeGenerator extends App
{
    val db = Database.forURL("jdbc:sqlite:/home/samik/db/mydb.db", driver = "org.sqlite.JDBC")
    val tables = Await.result(db.run(MTable.getTables), 1 second).toList
    tables.foreach(println)
}

Я получаю вывод ниже:

MTable(MQName(models),TABLE,null,None,None,None)
MTable(MQName(users),TABLE,null,None,None,None)

Однако следующий код, запускаемый таким же образом, не работает:

object TableCodeGenerator extends App
{
    val db = Database.forURL("jdbc:sqlite:/home/samik/db/mydb.db", driver = "org.sqlite.JDBC")
    val dbio = SQLiteProfile.createModel(Some(MTable.getTables))
    val model = db.run(dbio)

    val codegenFuture: Future[SourceCodeGenerator] = model.map(model => new SourceCodeGenerator(model))

    codegenFuture.onSuccess
    {
        case codegen => codegen.writeToFile(
            "org.sqlite.JDBC",
            "/tmp",
            "my.package.dao",
            "Tables",
            "Tables.scala")
    }
}

Это означает, что код работает успешно, но я не вижу никакого выходного файла. Есть ли что-то, что мне не хватает?


person Samik R    schedule 15.03.2017    source источник


Ответы (1)


Вышеуказанное происходило из-за того, что базовый код молча выдавал исключение. Причиной этого исключения было то, что я использовал «функцию» sqlite, где, если вы не упомянули тип данных в схеме, sqlite предполагает, что это текстовый тип. Однако это создает проблему для гладкого кода.

Подробнее здесь. Немедленным решением было исправить схему, но я думаю, что теперь это исправлено и в slick.

person Samik R    schedule 02.08.2017