java - 如何在谓词 Java 中添加对列表对象的检查
问题描述
我有一个用户实体,我有一个角色列表,现在我想使用 Java 规范和谓词按用户的特定列表获取用户列表。谁能帮我吗?以下是代码片段供参考。
public List<Users> findByPagingCriteria(SearchModel searchModel, Pageable pageable) {
Page page = userRepository.findAll(new Specification<Users>() {
@Override
public Predicate toPredicate(Root<Users> root, javax.persistence.criteria.CriteriaQuery<?> query,
CriteriaBuilder cb) {
List<Predicate> predicates = new ArrayList<>();
if (searchModel.getName() != null) {
predicates.add(cb.or(cb.like(root.get("firstName"), "%" + searchModel.getName() + "%"),
cb.like(root.get("lastName"), "%" + searchModel.getName() + "%")));
}
if (searchModel.getId() != null) {
predicates
.add(cb.and(cb.equal(root.get("adminDetails").get("adminUniqueId"), searchModel.getId())));
}
if (searchModel.getRole() != null && searchModel.getRole().equalsIgnoreCase("admin")) {
List<Role> roles = Arrays.asList(Role.builder().name("ROLE_ADMIN").build());
predicates.add(cb.and(cb.equal(root.get("roles"), roles)));
}
return cb.and(predicates.toArray(new Predicate[predicates.size()]));
}
}, pageable);
page.getTotalElements(); // get total elements
page.getTotalPages(); // get total pages
return page.getContent(); // get List of Employee
}
检查角色部分,因为我已经通过了 ADMIN 角色列表。但是在运行时它会抛出一个错误说,
java.sql.SQLException:没有为参数 4 指定值
解决方案
推荐阅读
- android - 如何知道应用程序何时从堆栈中打开?
- php - 显示缩略图的 Wordpress RSS 提要问题
- java - 找不到符号方法 requestPermissisons
- java - 如何在 selenium webdriver 的组列表中选择项目
- gforge - Gforge 登录错误
- java - 如何在 af:column adf 表中将日期格式化为 yyyy/mm/dd?
- node.js - 如何在 Strapi 中添加 webhook?
- c# - GemBox - 在 PDF 上剪切表格
- java - 错误:连接超时:连接?在构建项目gradle时
- c++ - 如何在 qt 项目中包含 winscard.lib