scala-activerecord:如何将自定义配置传递给 Tables.initialize?

scala-activerecord: how to pass custom configuration to Tables.initialize?

我想用 scala-activerecord 创建表:

Tables.initialize(ConfigFactory.load(env))

这不起作用,因为 initialize 只接受 Map[String, Any]。 我的第二次尝试是:

Tables.initialize(ConfigFactory.load(env).root())

其中 root() returns ConfigObject:

public interface ConfigObject extends ConfigValue, Map<String, ConfigValue>

我仍然得到:

Error:(15, 49) type mismatch;
 found   : com.typesafe.config.ConfigObject
 required: Map[String,Any]
  Tables.initialize(ConfigFactory.load(env).root())
                                                ^

我不明白,Any应该接受任何值,为什么它不接受ConfigValue

如何将我的配置传递给 Tables.initialize 方法?

How can I pass my config to the Tables.initialize method?

这可能是一个解决方案:

import scala.collection.JavaConversions._
Tables.initialize(ConfigFactory.load(env).root.unwrapped.toMap)

对于 ActiveRecordTables#initialize 方法,假定您按如下方式提供覆盖设置和值:

Tables.initialize(Map(
  "driver" -> "org.postgresql.Driver",
  "jdbcurl" -> "jdbc:postgresql://hostname:5432/dbname"
))

此功能应该用于临时覆盖值集(例如编码测试)等应用程序。

https://github.com/aselab/scala-activerecord/blob/281ae4073d1d2f4b04b31520c961f7210c5408d4/activerecord/src/test/scala/samples/AutoDdlSpec.scala#L34

数据库设置请参考:

https://github.com/aselab/scala-activerecord/wiki/Database-Settings