【问题标题】:Slick codegen not giving any output光滑的代码生成没有给出任何输出
【发布时间】:2017-08-05 18:33:14
【问题描述】:

我正在尝试将当前版本的 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")
    }
}

意思是,代码运行成功,但是我没有看到任何输出文件。我有什么遗漏吗?

【问题讨论】:

    标签: scala sqlite slick slick-codegen


    【解决方案1】:

    发生上述情况是因为底层代码默默地抛出异常。这个异常的原因是我使用了 sqlite 的“特性”,如果你没有在模式中提到数据类型,sqlite 会假定它是文本类型。然而,这给光滑的代码带来了问题。

    更多details here。直接的解决方案是修复架构,但我认为这现在也已经修复了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-13
      • 1970-01-01
      • 2019-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-05
      相关资源
      最近更新 更多