1

我有一个大数据库,我需要进行一个查询,至少要加入 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

4 回答 4

1

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

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

于 2012-11-29T05:21:34.470 回答
0

我发现了问题,avg(g.grade) 返回一个双精度,我的类 Stat 的构造函数接受一个浮点数,所以我有一个与未找到构造函数异常相关的错误。

谢谢大家 :)

于 2012-11-29T17:33:15.457 回答
0

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

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

于 2012-11-29T06:04:58.143 回答
0

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

select new your_pkg_name.Stat(avg(g.grade) as avgGrade, max(g.grade)  as maxGrade, min(g.grade) as minGrade) FROM ...
于 2012-11-29T06:02:42.343 回答