JPA Hibernate转换为非Entity类

时间:2012-11-28 23:39:32

标签: hibernate jpa

我有一个大型数据库,我需要创建一个至少与3个表连接的查询。问题是此查询的结果集不是实体类。

查询:

SELECT avg(g.grade) avgGrade, max(g.grade) maxGrade, min(g.grade) minGrade FROM...

新班级:

class Stat {
  float avgGrade;
  float maxGrade;
  float minGrade;

  // constructor + getters and setters
}

现在我需要从查询中获取这三个值。我怎么能这样做?

4 个答案:

答案 0 :(得分:1)

您可以使用构造函数表达式尝试以下查询,并相应地进行修改。

  

SELECT NEW package_name.Stat(avg(g.grade),max(g.grade),min(g.grade))   来自......

答案 1 :(得分:0)

假设类Stat具有适当的构造函数

select new your_pkg_name.Stat(avg(g.grade) as avgGrade, max(g.grade)  as maxGrade, min(g.grade) as minGrade) FROM ...

答案 2 :(得分:0)

你有两个选择(我认为还有更多选择,但这两个应该是最常见的选择),首先使用Nayan Wadekar建议的方式,它通过构造函数构造数据对象。

第二个只是选择你想要的字段,Hibernate将返回一个元组列表。列表的每个元素都是Object [],它表示结果的一个“行”。您可以自行实现从元组到Stat类的转换。

答案 3 :(得分:0)

我发现问题,avg(g.grade)返回一个double,我的类Stat的构造函数接受一个float,所以我有一个与找不到的构造函数异常相关的错误。

感谢所有人:)