Criteria Builder Create new Object In Select Statement

匿名 (未验证) 提交于 2019-12-03 02:49:01

问题:

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!

回答1:

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


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!