带有 CriteriaQuery 的 TypedQuery 中的构造函数表达式

Constructor Expression in TypedQuery with CriteriaQuery

我之前使用 JPQL NamedQueries 以便从一个 db-table A 中获取一些值,并通过构造函数表达式将其放入 PartsOfA,如下所示:SELECT new ...PartsOfA( a.member) 来自 A a where ...

现在,我正尝试对应使用 CriteriaQuery 创建的 TypedQuery 执行相同的操作。

可能吗?如果是,如何?

是的,你可以。

示例:

传输对象:

public class BasicTeacherInfo {

    private String firstName;
    private String lastName;

    public BasicTeacherInfo(String firstName, String lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }

    public String getFirstName() {
        return firstName;
    }

    public String getLastName() {
        return lastName;
    }

}

查询

CriteriaQuery<BasicTeacherInfo> query = cb.createQuery(BasicTeacherInfo.class);
Root<Teacher> teacher = query.from(Teacher.class);
        query.multiselect(teacher.get("firstName"),teacher.get("lastName"));

List<BasicTeacherInfo> results = em.createQuery(query).getResultList();

for (BasicTeacherInfo info : results) {
    System.out.println("First name = " + info.getFirstName() + " "
        + "Last Name = " + info.getLastName());
}

示例来自 http://www.thejavageek.com/2014/04/27/multiselect-criteria-api/

顺便说一下:您似乎误用了 TypedQuery 这个词。 Criteria Query 不是 TypedQuery。 TypedQuery<T> 是例如的类型命名查询。