spring boot基于字段值来过滤休息

时间:2018-02-07 10:31:10

标签: java spring spring-mvc jpa spring-boot

我正在开发一个暴露一些端点的Spring启动应用程序。我想要实现的是提供一个基于字段值的花哨的过滤机制。假设我有两个域模型:文章和作者,文章可以由作者列表编写。

@Entity
public class Article{
    @Id
    private String id;
    private String title;
    private String body;
    @OneToMany
    private List<Author> authors;

    //Getters and setters
}

@Entity
public class Author{

    @Id
    private String id;
    private String firstname;
    private String lastname;

    //Getter and setters
}

目前,我可以使用端点访问我的所有文章: localhost:8080 / api / articles ,以及我要集成的新过滤系统,我希望有类似的内容: localhost:8080 / api / articles?title = myTitle 按标题检索文章,或 localhost:8080 / api / articles?title = mytitle&amp; author.firstname = Jhon 按标题和作者的名字检索文章。

我查看了JPA规范并成功对模型的直接字段进行了第一次过滤,但我无法使其适用于嵌套字段或枚举类型。任何库或其他解决方案来实现这种需求?

1 个答案:

答案 0 :(得分:0)

QueryDsl将是这种情况下的一个选项。当然,可以使用QueryDsl查询嵌套字段 对于您需要的情况,这将是谓词

BooleanExpression predicate = QArticle.title.eq(mytitle);
predicate.and(QArticle.authors.any().firstname.eq(John))
ArticleRepository.findAll(predicate);