我正在尝试使用Spring Data JPA构建动态规范。
是否可以仅根据非null参数建立规范?
我有两个规格:
public static Specification<User> userHasRole(String name) {
return (root, criteriaQuery, criteriaBuilder) -> criteriaBuilder.equal(root.get(User_.role), name);
}
public static Specification<User> userHasName(String name) {
return (root, criteriaQuery, criteriaBuilder) -> criteriaBuilder.equal(root.get(User_.username), name);
}
然后我像这样使用它
Specifications specifications = Specifications.where(userHasName(username)).and(userHasRole(roleName));
并且我希望仅当username和roleName不为null时,此规范才能按名称和角色进行过滤。如果其中之一为空,那么应该是具有1个条件的规范吗?
例如:
username = "xx" and roleName = null
查询应类似于:
".. where username = 'xx'"