返回JPQL查询的类型

时间:2016-05-05 08:48:22

标签: jpa jpql

我实际上需要使用JPQL查询数据库。我找不到任何方法返回对象列表列表。在以下链接http://docs.jboss.org/hibernate/core/3.3/reference/en/html/queryhql.html#queryhql-select中,可以返回Object[]的List,但是我没有看到如何使它适合我需要返回的类型,它是列表对象列表。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

要首先从查询创建对象,您必须为要获取的字段创建一个类,例如:

package com.my.package;

public class MyObject {

    private String fieldOne;
    private String fieldTwo;

    public MyObject(String fieldOne, String fieldTwo) {
        this.fieldOne = fieldOne;
        this.fieldTwo = fieldTwo;
    }

    // Other methods...
}

然后,您对这些特定字段的jpql查询将如下所示:

SELECT new com.my.package.MyObject(t.fieldOne, t.fieldTwo) FROM MyTable t

您可以使用@Query注释在您的存储库中使用它,如下所示:

@Query("SELECT new com.my.package.MyObject(t.fieldOne, t.fieldTwo) FROM MyTable t")
List<MyObject> findMyObjects();

或使用EntityManager

EntityManager entityManager = ...;

entityManager
        .createQuery("SELECT new com.my.package.MyObject(t.fieldOne, t.fieldTwo) FROM MyTable t", MyObject.class)
        .getResultList();