1

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

我定义了一个特性来进行基本的安全检查,但是每次我想运行数据库查询时都会引发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为特征,但是如何将其应用到另一个特征中以便我可以继续运行查询?还是我只是没有正确处理这个问题?谢谢。

4

1 回答 1

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....

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

于 2012-03-02T02:12:55.293 回答