我有以下方法,为我的查询准备条件。 我想在Parent对象上添加where条件,子对象是我的Root。
如何使用JPA Criteria API实现此目的。
下面是我现有的代码,目前在父对象的where条件被注释掉了。
private void prepareSearchCriteria(
Map<String, Object> filters,
CriteriaBuilder builder,
Root<Employee> employee,
List<Predicate> predicates) {
if (filters.containsKey("employeeName")) {
predicates.add(builder.equal(employee.get("employeeName"),filters.get("employeeName").toString()));
}
if (filters.containsKey("enp.deptName")) {
// How do add this condition ?
// predicates.add(builder.equal(employee.get("employeeName"),filters.get("enp.deptName").toString()));
}
}
有人可以帮我这个吗?我是JPA Criteria API的新手。
答案 0 :(得分:1)
我使用下面的代码解决了它,基本上Path是你要比较的属性。所以从root到你要比较的属性你必须创建路径,然后你可以将它添加到谓词。
if (filters.containsKey("enp.deptName")) {
Path<Object> path = employee.join("employee").get("deptName");
predicates.add(builder.equal(path, filters.get("employee.deptName")));
}
来源 altuure