Я не использовал Play, так что вы, возможно, потребуется настроить это вокруг немного, чтобы заставить его работать, но вы должны быть в состоянии создать новую сессию для этой базы данных, что-то вроде:
object MySecondDBSchema extends SquerylSchema with SchemaDefaults {
def newSession[A](f: => A) = {
transaction(new org.squeryl.Session(//get java.sql.Connection, new H2Adapter)) {
f
}
}
val myTable = table[MyTable]
}
или, если вы просто хотите подключиться и планируете самостоятельно заниматься транзакциями.
def newSession[A](f: => A) = {
using(new org.squeryl.Session(//get java.sql.Connection, new H2Adapter)) {
//start your own transaction
f
}
}
Затем в коде, когда вы хотите получить доступ к этим другой базе данных вы можете обернуть ваши запросы в том, что:
def myMethodToAccessFirstDB() = {
import MySecondDBSchema._
newSession{
//access alternate database
from(myTable)(t => select(t)).toList
}
}
def myMethodToAccessDefaultDB() = {
import DefaultSchema._ //Or whatever your default Schema is named
//access default database
from(otherTable)(ot => select(ot))
}
Логично определить и организовать таблицы во втором объекте, который расширяет org.squeryl.Schema
, но любой запрос, сделанный в блоке newSession
, будет выполнен против второй базы данных.
Что касается переопределения атрибута name
, это изменит значение по умолчанию schema in the database, но не обязательно для создания отдельной схемы Squeryl.
По копаться, я нашел подсказку в группе Squeryl Google: https://groups.google.com/forum/#!topic/squeryl/kdUmp1-hOmA - Я думаю, мне нужно для создания другого класса Schema и переопределения атрибута Schema.name. Все еще не уверен, как сказать Squeryl, какую схему использовать для чего DB – alboko