【发布时间】:2018-05-04 17:07:28
【问题描述】:
我在我的 RestController 中对具有日期对象的实体使用 QuerydslPredicate,我希望能够查询给定日期之前/之后/之间的日期,希望有类似的东西
- GET /problems?createdOnAfter=XXX
- GET /problems?createdOnBefore=YYY
- GET /problems?createdOnAfter=XXX&createdOnBefore=YYY
我的实体有日期字段createdOn,我希望我可以使用多个别名自定义实体路径的绑定,即添加别名createdOnAfter & createdOnBefore - 看起来我不能创建多个别名,例如
@Repository
public interface ProblemRepository extends JpaRepository<Problem, String>, QueryDslPredicateExecutor<Problem>,
QuerydslBinderCustomizer<QProblem> {
....
@Override
default void customize(QuerydslBindings bindings, QProblem root) {
bindings.bind(root.createdOn).as("createdOnAfter").first(TemporalExpression::after);
bindings.bind(root.createdOn).as("createdOnBefore").first(TemporalExpression::before);
}
}
前面的别名显然覆盖了后面的别名。
避免手动创建谓词的正确方法是什么?
【问题讨论】:
-
我希望能够使用 createdOnAfter、createdOnBefore 或两者兼有 - 该解决方案意味着我每次都必须提供 2 个日期
标签: spring spring-data-jpa querydsl spring-restcontroller