使用CriteriaQuery在TypedQuery中构造函数表达式

时间:2016-12-15 16:04:50

标签: jpql

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

现在我尝试使用TypedQuery做同样的事情,它将使用CriteriaQuery创建。

有可能吗?如果是,怎么样?

1 个答案:

答案 0 :(得分:1)

是的,你可以。

示例:

<强> TransferObject:

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>是例如命名查询。