谁能告诉我实现软删除的好方法是什么?我可以在我的类中有一个deleted属性,但我的问题是如何轻松地忽略在我的搜索、列表等中具有deleted = true的实例。
因此,与其说Domain.findByDeleted(true)只需让Domain.list()忽略已删除的实例,不如说Domain.findByPropertyAndDeleted('property', true)只需说Domain.findByProperty('property')。
有没有好的方法呢?
发布于 2012-01-19 08:50:04
为此,我建议使用named query。就像这样
static namedQueries = {
notDeleted {
ne 'deleted', true
}
}您可以像使用Domain.notDeleted.list()或Domain.notDeleted.findByProperty(value)一样使用它们
发布于 2012-01-19 18:16:45
hibernate filter plugin可以自动将谓词deleted = false添加到为特定域类执行的每个查询中。然而,我的测试表明这个插件不能与Grails 2.0.0一起工作。
发布于 2012-01-19 15:52:08
我们习惯于重写list(),get()和一些域类的方法。现在我们可以使用像A.delete(log: true)这样的语法
在bootstrap上,我们执行以下操作:
grailsApplication.domainClasses.each { GrailsDomainClass domainClassInfo ->
def oldGormDelete = domainClassInfo.metaClass.getMetaMethod('delete', [] as Class[])
assert oldGormDelete
domainClassInfo.metaClass.delete = { Map params ->
...
def result = oldGormDelete.invoke(delegate)
...
}
}https://stackoverflow.com/questions/8919587
复制相似问题