Grails3 逻辑删除(logical deletion)

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 {
    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() }

API连接

你可能感兴趣的:(grails)