Использование API критериев JPA2 без метамодели в свойстве списка

Как я могу сформулировать следующий запрос критериев 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")));

Но я не могу понять, как преобразовать путь в выражение, которое требуется для cb. isEmpty ...

Спасибо.

14
задан Pascal Thivent 31 August 2010 в 01:51
поделиться

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);

Reference

20
ответ дан 1 December 2019 в 13:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: