0

假设我有以下 JPQL 查询

SELECT e.column1, e.column2, SUM(e.column3), SUM(e.column4) FROM Entity e GROUP BY e.column1, e.column2

显然我不会返回一个实体对象,而是一些更复杂的东西。如何在方法中返回它?

public List<???> query1() {

   Query q = entityManager.createQuery("...");

   List<Something???> list = q.getResultList();

   return list;
}
4

1 回答 1

2

这样的查询返回 a List<Object[]>,其中每个元素因此是一个对象数组。数组的第一个元素的类型为 Entity.column1,第二个元素的类型为 Entity.column2,最后两个元素的类型为 Long(至少使用 Hibernate)(使用 EclipseLink 检查)。

您可以通过简单地循环对象列表并将每个对象转换为 a来转换List<Object[]>in a 。您也可以直接在查询中使用构造函数表示法(前提是 Foo 有这样的构造函数),但我个人不喜欢它,因为它不可重构:List<Foo>Foo

select new com.baz.bar.Foo(e.column1, e.column2, SUM(e.column3), SUM(e.column4)) from ...
于 2013-10-07T18:41:57.510 回答