使用规范按不包含特定项目的实体的列表字段进行搜索

时间:2018-11-28 19:02:17

标签: java jpa spring-data-jpa criteria-api

我正在尝试查找没有管理员角色的所有用户。

User {
    List<Role> roles = new ArrayList<>();
}
Role {
    String roleName;
}

public Page<User> find() {
Specification<ApplicationUser> spec = builder.build();
        spec = spec.and((root, query, cb) -> {
                    Join join = root.join("roles");
                    query.distinct(true);
                    return cb.not(cb.equal(join.get("roleName"), "ADMIN")); // tried also `cb.notEqual`
                }
        );
...
Page<User> userList = dao.findAll(spec, pageRequest);
return userList;
}

返回的结果仍然包含管理员用户。这是什么问题?

0 个答案:

没有答案