こんにちは、Grails フィルター プラグインを使用しています
以下のようにデフォルトのフィルターを定義しようとしています
// Defined inside the Book entity
static hibernateFilters = {
activeFilter(condition:'active=1', default:true)
}
統合テストを実行すると、フィルターは次のような動的ファインダーメソッドには適用されません
Book.findAll()
BootStrap.groovy クラスに以下の行を追加すると
Book.enableHibernateFilter('activeFilter')
次に、フィルターが適用されます。
ただし、BootStrap.groovy に上記のコードがあってもなくても、アプリケーションの実行時にフィルターは適用されません。
何か案は ?
これを少し掘り下げた後、私が見つけたものです
hibernate フィルター プラグインは zkgrails プラグインがなくてもうまく機能しますが、2 つが一緒に機能するようには見えません :(
以下のコード スニペットが問題のようです。
ここで2つの問題が発生する可能性があると思います
1) 最初に実行は
all(controller:' ', action:' ')に到達します
アプリケーションの起動時に 1 回だけ。新しいリクエストがあり、したがって新しいセッションがあるたびに、そこに到達する必要があると考えています。
2) 何らかの修正を加えて何とかそこまでたどり着いたとしても、すべてを通り抜けることはできないと思います(controller:' ', action:' ')
作曲家はzkossで使用されます
class HibernateFilterFilters {
def filters = {
all(controller:'*', action:'*') {
before = {
def session = grailsApplication.mainContext.sessionFactory.currentSession
DefaultHibernateFiltersHolder.defaultFilters.each {name ->
session.enableFilter(name)
}
}
after = {
}
afterView = {
}
}
}
}