【问题标题】:Constructor Expression in TypedQuery with CriteriaQueryTypedQuery 中的构造函数表达式与 CriteriaQuery
【发布时间】:2016-12-15 16:04:49
【问题描述】:

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

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

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

【问题讨论】:

    标签: jpql


    【解决方案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&lt;T&gt; 是类型,例如命名查询。

    【讨论】:

    • 这正是我想要的。非常感谢!
    • 谢谢!我刚刚做了。
    猜你喜欢
    • 2022-10-13
    • 1970-01-01
    • 1970-01-01
    • 2017-09-02
    • 2013-05-24
    • 1970-01-01
    • 2021-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多