【发布时间】:2021-04-12 05:26:26
【问题描述】:
我正在使用带有 Web 支持的 Spring Data / QueryDSL,使用注释 @EnableSpringDataWebSupport。
这很好用,并自动将 GET 查询映射到 Predicate。我可以使用以下查询搜索我的 DTP 对象:
http://localhost/search/dtp?name=foo
我现在需要添加更复杂的查询,例如 AND 或 OR 子句。
我发现这个库似乎实现了我想要的:spring-data-querydsl-value-operators
我的理解是,我需要将以下代码添加到我的 Repository 接口以利用此库:
@Override
default void customize(QuerydslBindings bindings, QDtp root) {
bindings.bind(root.name).all(ExpressionProviderFactory::getPredicate);
bindings.bind(root.description).all(ExpressionProviderFactory::getPredicate);
...
}
但是我之前不需要customize() 方法,现在看来我需要为我的对象的所有字段和子字段设置这些新绑定。这可能会导致维护问题:如果添加了新字段但开发人员忘记添加此绑定,则对该字段的搜索将无法与其他字段一样工作。
以前不是这样的。
我怎样才能使这些绑定通用并应用于我的对象的所有字段和子字段?
【问题讨论】:
标签: java spring spring-data-jpa spring-data querydsl