关联查询

对于查询条件的目标字段属于关联实体的情况,@QueryCondition注解的field属性支持以.的形式将查询条件作用于关联对象中的字段。

class Foo {
    Long id;
    String name;
    @ManyToOne
    Bar bar;
}
class Bar {
    Long id;
    String name;
    @OneToMany(mappedBy="bar")
    List<Foo> foos;
}
class FooQo {
    @QueryCondition(field="name")
    String fooName;
    @QueryCondition(field="bar.name")
    String barName;
}

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

生成的SQL:

如果关联关系是一对多/多对多,需要在field中对应的字段名称前面加*

生成的SQL:

目前仅支持内连接

Last updated