2012-03-02 59 views
1

更新後的問題經過一些進一步的調試後,我更新了這個問題,以便更準確地解決實際問題。玩!問題與@Before,特質和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拋出DB錯誤。在我的控制器中,我添加了Squeryl作爲特徵,但是如何將其應用於另一個特徵,以便繼續運行查詢?或者我只是沒有正確處理這個問題?謝謝。

回答

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

一切查詢添加,只需要制定一些錯誤。如果我發現更多警告,我會更新答案。