带有 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>
是例如的类型命名查询。
我之前使用 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>
是例如的类型命名查询。