1、介绍:“逻辑”删除(有时称为“软”删除)是一种删除,实际上并不删除相关数据,而是将数据标记为删除。将数据标记为已删除,因为缺省情况下排除查询中的数据的好处同时仍然保持在必要时/必要时检索数据的能力。
2、依赖:
要将GORM Logical Delete插件添加到应用程序,请将以下依赖项添加到build.gradle的依赖项块中:
compile "org.grails.plugins:gorm-logical-delete:2.0.0.BUILD-SNAPSHOT"
3、特性:
该插件提供了 可应用于域类的gorm.logical.delete.LogicalDelete特性,以指示该域类应参与逻辑删除。该特征添加了一个名为deleted
域类的布尔型持久性属性。如果此属性的值为true
,则表示记录已被逻辑删除,因此将默认排除查询结果。
import gorm.logical.delete.LogicalDelete
class Person implements LogicalDelete<Person> {
String userName
static mapping = {
// the deleted property may be configured
// like any other persistent property...
deleted column:"delFlag"
}
}
4、查询
大多数查询将默认自动从结果中排除逻辑删除的记录。
查询像这样创作...
results = Person.findAll {
userName == 'Robert'
}
被执行,就好像它是这样写的...
results = Person.findAll {
userName == 'Robert'
deleted == false
}
如果您希望将逻辑删除的记录包含在查询结果中,则可能会将查询包装在调用中withDeleted
,如下所示。
results = Person.withDeleted { Person.findAll() }