【问题标题】:Specify Oracle schema with Slick 3.2使用 Slick 3.2 指定 Oracle 模式
【发布时间】:2017-06-16 08:21:38
【问题描述】:

我有一个包含多个用户/模式的 Oracle 数据库,我想为特定用户自动生成 Slick 模式。这是我迄今为止尝试过的:

import scala.concurrent.ExecutionContext.Implicits.global

val profileInstance: JdbcProfile =
  Class.forName("slick.jdbc.OracleProfile$")
    .getField("MODULE$")
    .get(null).asInstanceOf[JdbcProfile]

val db = profileInstance.api.Database
  .forURL("jdbc:oracle:thin:@//myhost:myport/servicename","user","pass")

val modelAction = OracleProfile.createModel(Some(OracleProfile.defaultTables))
val model = Await.result(db.run(modelAction), Duration.Inf)

model.tables.foreach(println)

这不会打印任何东西,我想我必须提供当前架构才能使用,但我不知道该怎么做。

另一方面,我可以使用以下代码列出数据库的所有模式:

val resultSet = db.createSession().metaData.getSchemas.getStatement.getResultSet
while(resultSet.next()) {
  println(resultSet.getString(1))
}

我如何指定要与 Slick 一起使用的架构?

【问题讨论】:

    标签: oracle scala slick-3.0


    【解决方案1】:

    我已经找到了方法。我没有使用OracleProfile.defaultTable,而是像这样手动定义了我需要的表和视图:

    val modelAction = OracleProfile.createModel(
      Some(MTable.getTables(None, Some("MYSCHEMA"), None, Some(Seq("TABLE", "VIEW"))))
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多