伪代码
(root, query, criteriaBuilder)->Subquery cq = query.subquery(Task.class);
Root table1 = cq.from(Task.class);
Predicate taskPhone = criteriaBuilder.like(table1.get(“phone”).as(String.class), “%” + keyword + “%”);
Predicate taskName = criteriaBuilder.like(table1.get(“name”).as(String.class), “%” + keyword + “%”);
predicate[0]=criteriaBuilder.or(taskPhone, taskName);
predicate[1]=criteriaBuilder.equal(table1.get("id").as(Long.class), root.get("taskId").as(Long.class));
cq.where(predicate);
Subquery<Task> subTask = cq.select(table1);
predicates.add(criteriaBuilder.exists(subTask));