jpa - JPQL 查询的返回类型

标签 jpa jpql

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

最佳答案

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

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();

关于jpa - JPQL 查询的返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37046240/

相关文章:

mysql - 尝试在 mysql 数据库中持久保存一个对象

java - 如何使用 Hibernate 保存具有相关空对象的实体

java - 如何使用 JPA 提高更新数据的性能

hibernate - 为什么字符串需要 Hibernate JPQL 类型转换

mysql - 定期删除数据库中超过一个月的所有条目的最有效方法

java - 如何通过投票订购特定日期的餐厅

mysql - JPQL 未对空值进行分组

java - 将 Stringattribute 绑定(bind)到单独表的列

mysql - 使用 JPA 创建表

java - 向 JPA 实体添加动态属性