hibernate - Hibernate 5,具有 2 个限制的 where 子句的条件查询
问题描述
对于员工表
public class Employee {
private Long id;
private int deptId;
private String name;
private LocalDateTime joiningDate;
private LocalDateTime seperatedDate;
}
我想建立一个具有以下两个条件的标准
criteriaQuery.where((EmployeeRoot.get("deptId").in(request.getDeptIdList())));
criteriaBuilder.greaterThanOrEqualTo(EmployeeRoot.get("joiningDate"), startDate));
但它只需要最新的谓词。我怎样才能将两者结合起来像 [Where {condition1} + AND {condition2}] ?
解决方案
你应该这样做:
CriteriaBuilder builder = entityManager.getCriteriaBuilder();
CriteriaQuery<Employee> criteria = builder.createQuery(Employee.class);
Root<Employee> root = criteria.from(Employee.class);
criteria
.select(...)
.where(
builder.and(
root.get("deptId").in(request.getDeptIdList()),
builder.greaterThanOrEqualTo(root.get("joiningDate"), startDate))
)
);
entityManager.createQuery(criteria).getResultList();
推荐阅读
- android - 不能画长线
- java - RabbitMQ 为发送到 DLQ 的消息附加异常详细信息
- angular - 如何在不重新渲染的情况下更新我的 mat-tree?
- android - 滑动时的 RecyclerView ItemTouchHelper
- javascript - 在页面刷新时,解构道具会在 componentDidMount 中提供未水合的值
- angular - 如何在另一个垫子自动完成的“optionSelected”事件上打开垫子自动完成面板?
- ios - 在桥接的 Swift 类中具有默认的非惰性属性时 Swift 和/或 ObjC 内存泄漏
- angular - Angular - 如何从产品构建中排除延迟加载的模块?
- git - Git - 如何自动在 repo 中推送未跟踪(忽略)的文件
- python - 用于检测任务的神经网络可视化