cheseaux
cheseaux

Reputation: 5315

Specify Oracle schema with Slick 3.2

I have an Oracle database that contains multiple users/schemas and I would like to generate Slick Schemas automatically for a specific user. This is what I've tried so far :

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)

This doesn't print anything, I guess I have to provide the current schema to use, but I don't know how to do this.

On the other hand, I am able to list all the schemas of the database, using the following code :

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

How can I specify which schema I want to use with Slick ?

Upvotes: 0

Views: 320

Answers (1)

cheseaux
cheseaux

Reputation: 5315

I've found out how to do it. Instead of using OracleProfile.defaultTable I manually defined the tables and views I needed like this :

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

Upvotes: 1

Related Questions