我正在使用spring-data-rest
通过spring servlet公开数据库内容。使用@QuerydslPredicate
可以通过HTTP GET发送过滤器,例如:
localhost:8080/persons?firstname=john&lastname=doe
问题:是否可以告诉Predicate
验证规则?例如,特定字段可能不是null
,例如姓氏?
@RestController
public class PersonServlet {
@GetMapping("/persons")
public Iterable<Person> getPersons(
@QuerydslPredicate(root = Person.class) com.querydsl.core.types.Predicate predicate,
Pageable pageable) {
return dao.findAll(predicate, pageable);
}
@Entity
public class Person {
private String firstname;
private String lastname;
private String age;
//many more fields
}
}
答案 0 :(得分:0)
似乎没有办法验证例如QPerson.lastname != null
。
因此,我使用以下方法将@Valid Person
添加为get参数并添加@NotNull
等验证约束。
@RestController
public class PersonServlet {
@GetMapping("/persons")
public Iterable<Person> getPersons(
@QuerydslPredicate(root = Person.class) com.querydsl.core.types.Predicate predicate,
Pageable pageable,
@Valid Person p) {
return dao.findAll(predicate, pageable);
}
@Entity
public class Person {
private String firstname;
@NotNull
private String lastname;
private String age;
//many more fields
}
}