2012-03-02 1 views
1

更新された質問さらにいくつかのデバッグの後、私はこの問題を実際の問題をより正確に更新しました。再生! @Before、traits、Squerylがクローズド接続を投げている問題?

基本的なセキュリティチェックを行うために定義した特性がありますが、DBクエリを実行するたびに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

この1つはここにこのポストに行くために私は別の測定値と信用に深くなった: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.... 

すべてのクエリに追加する必要がありました、ちょうどいくつかのバグをうまくする必要があります。それ以上の警告が出たら答えを更新します。