我有基于Spring Data REST的Spring Boot Web应用程序。通常,我添加了扩展JpaRepository
,QueryDslPredicateExecutor
和QuerydslBinderCustomizer
的接口。
Spring Data REST会将所有查询方法公开为search resources。 对于持久性字段,一切都很好,并且Spring Data的Web支持很好地将HTTP请求参数映射到实体中的持久字段,例如。
@Getter
@Entity
public class Person extends AbstractEntity<Long> {
// persistent fields
@Embedded
private PersonName name;
@Embedded
private PersonSurname surname;
@Embedded
private Age age;
// derived field
Status status() {
return age.isGreaterThan(30) ? Status.MARRIED : Status.FREE;
}
public enum Status {
MARRIED,
FREE;
}
}
由于QueryDSL支持,我可以发出过滤或排序请求,我也可以组合多个过滤器和排序。
如何根据派生属性进行过滤和排序,例如上面Status
类中的Person
?
并使其与典型的过滤和排序功能兼容,例如:我可以发出http://localhost:8080/people?name=Alice&status=MARRIED