2015-02-24 70 views
0

我想创建一个使用Scala,ActiveRecord的表:scala-activerecord:如何将自定义配置传递给Tables.initialize?

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

如何将我的配置传递给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

相关问题