Я новичок в Groovy и Grails, но я знаком с Hibernate. Для проекта, над которым я работаю, мне нужно реализовать soft deleting определенных классов домена. Hibernate Filters, похоже, было подходящим решением, так как это позволило бы мне добавить условие к моему классу домена, которое отфильтровывало бы мягкие удаленные записи, без необходимости вручную добавлять условие к каждому запросу. К счастью, Grails предлагает Hibernate Filter plugin, который должен облегчить использование фильтров Hibernate в Grails.Grails Hibernate Filters Plugin, похоже, работает, но не фильтрует результаты
К сожалению, как вы могли догадаться, я не могу заставить его работать. При отладке все кажется правильно настроенным (фильтры добавляются к объектам, фильтры включаются в сеансах и т. Д.), Но ничто не фильтруется из результатов.
Я поставил его так:
BuildConfig.groovy
grails.project.dependency.resolution = {
...
plugins {
...
compile ":hibernate-filter:0.3.2"
}
}
приложение-Config.groovy
import org.grails.plugin.hibernate.filter.HibernateFilterDomainConfiguration
dataSource {
...
configClass = HibernateFilterDomainConfiguration
}
MyDomainClass.groovy
class MyDomainClass extends MySuperClass {
...
Boolean deleted = false
static hibernateFilters = {
deletedFilter(condition:"deleted=0", default:true)
}
...
}
MyController.groovy
def list() {
...
myDomainInstances = MyDomainClass.list()
[myDomainInstanceList: myDomainInstances, myDomainInstanceTotal: myDomainInstances.totalCount, ...]
}
Используя приведенный выше код всегда дает мне отфильтрованные результаты, даже если кажется, что все настроено правильно. При отладке запуска приложения я вижу инициализацию плагина, сканирование моих классов домена и получение из него свойства hibernateFilters. После этого он правильно создает фильтры Hibernate. Когда я получаю запрос, я вижу, что фильтр Grails загружается, и плагин включает все фильтры по умолчанию (которые являются моими) в текущем сеансе Hibernate. Все выглядит так, как я ожидал бы (я вижу, что фильтр включен в ведении журнала Hibernate), за исключением результатов (SQL-журнал задерживает меня в этом случае,клаузулы добавляются для deleted
).
Я следовал инструкциям на documentation странице, а также попытался следующие:
- https://stackoverflow.com/a/6143422/236092
- http://www.intelligrape.com/blog/2010/07/13/grails-hibernate-filter-plugin-a-life-saver/
- https://stackoverflow.com/a/12467408/236092
Я также попытался предыдущих версий плагин и даже попытался явно включить фильтры, используя функции плагинов (Foo.withHibernateFilters
и т. д.).
Я все еще застрял, поэтому: может ли кто-нибудь помочь мне получить результаты фильтрации с помощью плагина Grails Hibernate Filter?
Б версии программного обеспечения:
- Grails 2.1.3
- Grails Hibernate 2.1.3
- Grails Hibernate фильтр 0.3.2
- Java 1.7.0_11
Я добавил вопрос для отслеживания проблем плагина: HTTP: //jira.grails .org/просмотр/GPHIBERNATEFILTER-9 –