我正在开发一个暴露一些端点的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规范并成功对模型的直接字段进行了第一次过滤,但我无法使其适用于嵌套字段或枚举类型。任何库或其他解决方案来实现这种需求?
答案 0 :(得分:0)
QueryDsl将是这种情况下的一个选项。当然,可以使用QueryDsl查询嵌套字段 对于您需要的情况,这将是谓词
BooleanExpression predicate = QArticle.title.eq(mytitle);
predicate.and(QArticle.authors.any().firstname.eq(John))
ArticleRepository.findAll(predicate);