Это мучило меня в течение последних двух дней, поэтому я взял немного кофе и потратил впустую час своей жизни, но я хотел бы показать вам, как это работает:
В вашем Global.scala
поместите это:
override def onStart(app: Application) {
SessionFactory.externalTransactionManagementAdapter = Some(() => {
if(org.squeryl.Session.hasCurrentSession) {
org.squeryl.Session.currentSessionOption.get
}
else {
val s = new org.squeryl.Session(DB.getDataSource().getConnection(), new PostgreSqlAdapter){
override def cleanup = {
super.cleanup
unbindFromCurrentThread
}
}
s.bindToCurrentThread
s
}
})
}
И тогда вам нужно будет выполнить некоторую очистку, чтобы ваше приложение не вышло из строя (в том же глобальном):
/**
* cleans up Squeryl thread to each request
*/
override def onRouteRequest(request: RequestHeader): Option[Handler] = {
org.squeryl.Session.currentSessionOption.foreach(_.unbindFromCurrentThread)
super.onRouteRequest(request)
}
Я обновлюэто, если я найду какие-либо предостережения и т.д.