Ответ 1
Да, API Criteria имеет конструкцию, похожую на выражения конструктора JPQL. Класс результата устанавливается с помощью метода конструкции в CriteriaBuilder.
Ваш запрос JPQL, выраженный как запрос критерия:
CriteriaBuilder cb...
CriteriaQuery<EmpMenu> q = cb.createQuery(EmpMenu.class);
Root<Project> c = q.from(Project.class);
q.select(cb.construct(EmpMenu.class,
c.get("name"), c.get("department").get("name")));