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

时间:2015-02-24 09:59:24

标签: scala activerecord config database-schema typesafe

我想用scala-activerecord创建表:

Tables.initialize(ConfigFactory.load(env))

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

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

其中root()返回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方法?

1 个答案:

答案 0 :(得分:1)

  

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

这可能是一个解决方案:

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