条件生成器在选择语句中创建新的对象 [英] Criteria Builder Create new Object In Select Statement

查看:123
本文介绍了条件生成器在选择语句中创建新的对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  em.createQuery(
SELECT NEW)我想知道是否可以创建这样的查询: EmpMenu(p.name,p.department.name)
+FROM Project p).getResultList();

也可以通过规范来完成:


$ b $ (根< T>根,CriteriaQuery<>查询,
CriteriaBuilder cb){


返回???;
}

感谢您!

construct 方法。

以标准查询表示的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)));


I was wondering if it's possible to create such query like :

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

also is it possible to do it via Specification:

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


    return ???;
}

Thanks in advance!

解决方案

Yes, Criteria API does have have construct similar to JPQL constructor expressions. Resuls class is set via construct method in CriteriaBuilder.

Your JPQL query expressed as an criteria query is:

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

这篇关于条件生成器在选择语句中创建新的对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆