Spring数据Jpa-建立动态规范

时间:2018-12-06 19:42:59

标签: spring jpa specifications

我正在尝试使用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'"

0 个答案:

没有答案