在 List 属性上使用 JPA2 条件 API 而不使用元模型

2022-09-02 21:37:36

如何在不使用元模型类的情况下制定以下 JPA2 条件查询:

CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Employee> cq = cb.createQuery(Employee.class);
Root<Employee> emp = cq.from(Employee.class);
cq.where(cb.isEmpty(emp.get(Employee_.projects)));
cq.select(emp);

我想使用:

cq.where(cb.isEmpty(emp.get("projects")));

但是我不知道如何将Path转换为表达式,这是cb.isEmpty需要的...

谢谢。


答案 1

试试这个:

CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery cq = cb.createQuery(Employee.class);
Root emp = cq.from(Employee.class);
cq.where(cb.isEmpty(emp.<List<Project>>get("projects")));
cq.select(emp);

或者,使用变量:Path

CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery cq = cb.createQuery(Employee.class);
Root emp = cq.from(Employee.class);
Path<List<Project>> projects = emp.get("projects"));
cq.where(cb.isEmpty(projects);
cq.select(emp);

参考


答案 2

推荐