标准生成器来创建新的对象在Select语句(Criteria Builder Create new

2019-08-02 18:41发布

我在想,如果有可能创造这样的查询,如:

em.createQuery(
        "SELECT NEW EmpMenu(p.name, p.department.name) "
            + "FROM Project p ").getResultList();

也有可能通过规范做到这一点:

public Predicate toPredicate(Root<T> root, CriteriaQuery<?> query,
        CriteriaBuilder cb) {


    return ???;
}

提前致谢!

Answer 1:

是的,标准API并具有已构建类似于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")));


文章来源: Criteria Builder Create new Object In Select Statement