玩! @Before,traits和Squeryl抛出关闭连接的问题?

时间:2012-03-02 00:21:18

标签: scala playframework squeryl

更新问题经过一些进一步的调试后,我已经更新了这个问题,以便更准确地解决实际问题。

我有一个我已经定义的特性来进行基本的安全检查,但每次我想运行数据库查询时都会引发Cannot operate on a closed connection!!!错误。

以下代码:

trait SecureAPI {
  self:Controller =>

  @Before
  def checkKey(key:String)
    models.Account.getByKey(key) match {
      case account:Account  =>  {
        renderArgs += "account" -> accountId
        Continue
      }
      case _  =>  Forbidden("Key is not authorized.")
    }
}

getByKey会引发数据库错误。在我的控制器中,我正在添加Squeryl作为特征,但是如何将其应用于另一个特征,以便我可以继续运行查询?或者我只是没有正确接近这个?感谢。

1 个答案:

答案 0 :(得分:2)

我深入研究了不同的阅读材料,这篇文章归功于这篇文章:http://www.alvarocarrasco.com/2010/12/i-have-settled-on-new-platform-for.html

我不得不使用Squeryl将会话绑定到当前线程。因此,为了使上述代码有效,我必须添加SessionFactory

@Before
def checkKey(key:String)
  SessionFactory.newSession.bindToCurrentThread // added this here
  models.Account....

现在一切都在查询,只需要解决一些问题。如果我发现更多警告,我会更新答案。