# 条件继承

在采用逻辑删除的系统中，查询条件需要拼接固定的`IS_DELETED = 0`语句。类似的场景下，开发者可以定义一个基本的查询条件对象，其他查询条件继承并扩展条件即可。

```java
class Foo {
    Long id;
    String name;
    Boolean isDeleted;
}
class BaseQo {
    @QueryCondition
    boolean isDeleted = false;
}
class FooQo extends BaseQo {
    @QueryCondition
    String name;
}

FooQo fooQo = new FooQo("foo");
Specification<Foo> specification = SpecificationFactory.getSpecification(fooQo);
List<Foo> foos = fooRepository.findAll(specification);
```

生成的SQL：

```sql
SELECT * FROM FOO
WHERE LOWER(FOO.NAME) = 'foo'
	AND FOO.IS_DELETED = 0;
```

{% hint style="info" %}
ORM框架会自动将布尔值`false`/`true`分别转换为`0`/`1`。
{% endhint %}
