Как интегрировать Scala Squeryl ORB с платформой play 2.0?
Я пытаюсь использовать Squeryl ORB с платформой Play 2.0, но при звонкеDB.getConnection()
при инициализации я получаю:
BadPath: параметр пути: Неверный путь '- не удалось найти источник данных для defaultdb': токен недопустим в выражении пути: '-' (вы можете заключить в кавычки этот токен, если вы действительно этого хотите здесь)
Конфигурация базы данных выглядит следующим образом (conf / application.conf):
db.default.url="jdbc:postgresql://localhost/mydb?user=postgres&password=postgres"
db.default.driver=org.postgresql.Driver
db.default.jndiName=defaultdb
И инициализация:
object Global extends GlobalSettings {
override def onStart(app: Application) {
SessionFactory.externalTransactionManagementAdapter = Some(() =>
Some(new Session(
DB.getConnection("defaultdb", true),
new PostgreSqlAdapter)))
...
Это правильный способ сделать это? Правильно ли использоватьdb.default.jndiName
значение конфигурации в качестве значения параметраDB.getConnection()
?
Или это должно быть сделано так?
SessionFactory.concreteFactory = Some(() =>
Session.create(
java.sql.DriverManager.getConnection("jdbc:postgresql://..."),
new PostgreSqlAdapter))
Это работает, но тогда я не могу использовать объекты запроса в шаблоне для итерации, что, я надеюсь, было бы возможно сexternalTransactionManagementAdapter
.
Я исправил следующее:DB.getConnection("default", true)
и удалилdb.default.jndiName
конфигурации. С этим я могу получить и использовать соединение, но второй разgetConnection()
называется, кидаетSQLException: Timed out waiting for a free available connection.
Мне не удалось использоватьexternalTransactionManagementAdapter
, ноconcreteFactory
работает хорошо - как описано ниже.