Usando a API de critérios JPA2 sem metamodelo em uma propriedade da lista
-
25-09-2019 - |
Pergunta
Como posso formular a seguinte consulta de critérios JPA2 sem usar as classes de metamodelo:
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);
Eu gostaria de usar:
cq.where(cb.isEmpty(emp.get("projects")));
Mas não consigo descobrir como converter o caminho para uma expressão, que é necessária para CB.Issempty ...
Obrigado.
Solução
Experimente isso:
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery cq = cb.createQuery(Employee.class);
Root emp = cq.from(Employee.class);
cq.where(cb.isEmpty(emp.u003CListu003CProject> >get("projects")));
cq.select(emp);
Ou usando um Path
variável:
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery cq = cb.createQuery(Employee.class);
Root emp = cq.from(Employee.class);
Caminho u003CListu003CProject> > projects = emp.get("projects"));
cq.where(cb.isEmpty(projects);
cq.select(emp);
Referência
javax.persistence.criteria
API
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow