私はこうして構築する Hibernate Criteria オブジェクトを持っています:
Criteria obsCriteria = hibernateTemplate.getSessionFactory()
.getCurrentSession().createCriteria(Observation.class);
ProjectionList projection = Projections.projectionList()
.add(Projections.rowCount())
.add(Projections.avg("value").as("avgScore"))
.add(Projections.avg("type.score"))
.add(Projections.max("date"))
.add(Projections.groupProperty("observedSubject"));
criteria.setProjection(projection);
これで正しい結果が得られますが、「observedSubject」プロパティはエンティティです。set show_sql を true に設定すると、最初のクエリ (18 行が返された) の後に、observedSubject エンティティを取得するために 18 の選択があることがわかりました。私はもう試した:
criteria.setFetchMode("observedSubject", FetchMode.JOIN);
しかし、それはうまくいきませんでした。暗闇の中での刺し傷のようなものとして、私は試しました:
criteria.createAlias("observedSubject", "observedSubject", Criteria.FULL_JOIN);
しかし、それもうまくいきませんでした。この動作を防ぐ方法はありますか?