Slick codegen 没有给出任何输出
Slick codegen not giving any output
我正在尝试将当前版本的 slick 和 slick-codegen (3.2.0) 与 sqlite 数据库一起使用。当我尝试列出 table 时,我得到了正确的名称。但是,当我尝试生成对应于 table 的 类 时,我没有得到任何输出。
这个有效:
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")
}
}
意思是,代码 运行s 成功,但我没有看到任何输出文件。有什么我想念的吗?
上述情况的发生是因为底层代码悄无声息地抛出了异常。此异常的原因是我使用的是 "feature" 的 sqlite,如果您没有在模式中提及数据类型,则 sqlite 会假定它是文本类型。然而,这给光滑的代码带来了问题。
更多 details here。直接的解决方案是修复架构,但我认为这现在也已在 slick 中修复。
我正在尝试将当前版本的 slick 和 slick-codegen (3.2.0) 与 sqlite 数据库一起使用。当我尝试列出 table 时,我得到了正确的名称。但是,当我尝试生成对应于 table 的 类 时,我没有得到任何输出。
这个有效:
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")
}
}
意思是,代码 运行s 成功,但我没有看到任何输出文件。有什么我想念的吗?
上述情况的发生是因为底层代码悄无声息地抛出了异常。此异常的原因是我使用的是 "feature" 的 sqlite,如果您没有在模式中提及数据类型,则 sqlite 会假定它是文本类型。然而,这给光滑的代码带来了问题。
更多 details here。直接的解决方案是修复架构,但我认为这现在也已在 slick 中修复。