1

私は大きなデータベースを持っており、少なくとも3つのテーブルと結合するクエリを作成する必要があります。問題は、このクエリの結果セットがEntityクラスではないことです。

クエリ:

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
}

次に、クエリからその3つの値を取得する必要があります。どうやってやるの?

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

クラス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 に答える
0

2つの選択肢があります(もっとあると思いますが、これら2つが最も一般的なものである必要があります)。最初にNayan Wadekarが提案する方法を使用します。これは、コンストラクターによってデータオブジェクトを構築します。

2つ目は、必要なフィールドを選択するだけで、Hibernateはタプルのリストを返します。リストの各要素はObject[]であり、結果の1つの「行」を表します。タプルからStatクラスへの変換を自己実装できます。

于 2012-11-29T06:04:58.143 に答える
0

問題が見つかりました。avg(g.grade)はdoubleを返し、クラスStatのコンストラクターはfloatを受け入れるため、コンストラクターの例外が見つからないことに関連するエラーが発生します。

ありがとうございます :)

于 2012-11-29T17:33:15.457 に答える