我有一个大型数据库,我需要创建一个至少与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
}
现在我需要从查询中获取这三个值。我怎么能这样做?
答案 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,所以我有一个与找不到的构造函数异常相关的错误。
感谢所有人:)