如何解决使用 spring/querydsl
我使用带有 Web 支持的 Spring Data/QueryDSL,使用注释 @EnableSpringDataWebSupport
。
这很有效,并自动将 GET 查询映射到 Predicate
。我可以使用以下查询来搜索我的 DTP 对象:
http://localhost/search/dtp?name=foo
我发现这个库似乎实现了我想要的: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()
方法,现在看来我需要为我的对象的所有字段和子字段设置这些新绑定。这可能会导致维护问题:如果添加了一个新字段,但开发人员忘记添加此绑定,那么对该字段的搜索将无法像其他字段一样进行。
以前不是这样。
如何才能使这些绑定通用并应用于对象的所有字段和子字段?
解决方法
我认为你可以使用这个库:https://github.com/turkraft/spring-filter
它将让您运行搜索查询,例如:
/search?filter= average(评分)> 4.5 和brand.name ('奥迪'、'路虎')和(年份> 2018或公里 50000)和颜色:“白色”和事故为空
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。