ここのHQL初心者は、これに本当に苦労しています。
次の3つのクラスがあるとしましょう:
public class A {
int id;
B b;
}
public class B {
int id;
Set<C> c;
}
public class C {
int id;
String type;
}
テーブル B には、テーブル b_c によって定義された C との多対多の関係があります。テーブル A から選択し、C.id でグループ化し、C.type = 'desiredType' でフィルター処理し、C オブジェクトと A.id の数を返すクエリが必要です。私は次のようなもので遊んでいます:
SELECT c, COUNT(a.id) as count from A a JOIN a.b.c as c WHERE c.type = 'desiredType' GROUP BY c.id ORDER BY COUNT(a.id) desc
このクエリのさまざまな繰り返しを試してみましたが、さまざまな例外が発生し続けるか、クエリから何も返されません。私が理解していないように見える主な問題は、正しい型に一致するコレクションの個々のオブジェクトを返す方法です。
この質問が愚かに聞こえないことを願っています。HQL のマニュアルとその他の 100 の SO の質問を読みましたが、何かが欠けているに違いありません。ご指導いただきありがとうございます。