関連エンティティのプロパティによって結果をグループ化する基準を作成しています。エイリアスを使用してみたり、プロパティ パス自体を使用してみたりしましたが、これまでのところ何も得られません。私のクラスは(ラフスケッチ):
class A{
@ManyToOne(...)
B b;
}
class B{
@OneToOne(...)
C c;
}
class C{
String s;
}
そして、C の一意の文字列 s ごとに A と B の量を返す基準が必要です。
私の最初の試みは:
session.createCriteria(A.class)
.setProjection(Projections.projectionList()
.add(Projections.groupProperty("b.c.s"), "string")
.add(Projections.countDistinct("b"), "b's")
.add(Projections.rowCount(), "a's"))
bcs は A のプロパティではないため、これはあまり役に立ちませんでした。
それから私は試しました
session.createCriteria(A.class)
.createAlias("b.c", "al")
.setProjection(Projections.projectionList()
.add(Projections.groupProperty("al.s"), "string")
.add(Projections.countDistinct("b"), "b's")
.add(Projections.rowCount(), "a's"))
これは実際に SQL に変換されましたが、クエリに結合が含まれていなかったため、それほどうまくいきませんでした。
私はここで何か間違っているようです。
基準 API を使用して、この種の効率的なクエリを取得することは可能ですか?