У меня есть приложение для воспроизведения на основе play-scala Typesafe template (Play Scala Seed) и попытался добавить Slick 3.0.0 в проект и подключиться к базе данных PostgreSQL.Как настроить HikariCP для Slick 3.0.0 RC1 на Typesafe conf
Сначала я добавил зависимости в build.sbt
:
libraryDependencies ++= Seq(
"com.typesafe.slick" %% "slick" % "3.0.0-RC1",
"postgresql" % "postgresql" % "9.1-901.jdbc4"
)
Затем добавил конфигурацию базы данных на application.conf
:
brDb = {
dataSourceClass = org.postgresql.ds.PGSimpleDataSource
url = "jdbc:postgresql://localhost:5432/test"
user = "postgres"
password = "postgres"
numThreads = 10
}
Следует заметить, что я не инвалид явно пулов, поэтому она включена по по умолчанию, и попытается использовать HikariCP, поскольку с Slick 3.0.0 RC1, HikariCP support exists and pooling using it is enabled by default.
И в моем объекте DAO, пытался получить соединение с базой данных, как это:
Database.forConfig("brDb")
Когда я запустить приложение с помощью activator run
, я получаю эту ошибку:
RuntimeException: java.lang.NoClassDefFoundError: com/zaxxer/hikari/HikariConfig
Затем я попытался добавить HikariCP как зависимость в build.sbt
:
libraryDependencies ++= Seq(
// ...
"com.zaxxer" % "HikariCP" % "2.3.3",
// ...
)
Убирали и перекомпилировать приложение с помощью activator clean compile
и запущенной его снова, но я получаю другую ошибку:
RuntimeException: java.lang.UnsupportedClassVersionError: com/zaxxer/hikari/HikariConfig
Я думаю, мне не хватает какой-то конфигурации, но я не уверен, и не нашли больше информации об этом. Как настроить конфигурацию для работы пула соединений?
Так что я не понимаю, почему не HikariCP стянут по зависимости от новой версии гладкой, если она, очевидно, зависит от него? – evermean
@evermean Я не уверен. Кажется, что зависимость находится в файле сборки для Slick: https://github.com/slick/slick/blob/3.0.0-RC1/project/Build.scala#L36 (я новичок в Scala и Play, так что, возможно, я что-то пропустил, и зависимость не потянулась по умолчанию) –