У меня есть объект 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);
Это дает правильный результат для меня, но свойство "seenSubject" является сущностью. Когда я установил для show_sql значение true, я увидел, что после первого запроса (который возвратил 18 строк) было 18 вариантов выбора для получения сущностей наблюдаемых объектов. Я пробовал:
criteria.setFetchMode("observedSubject", FetchMode.JOIN);
Но это не сработало. Как удар в темноте я попытался:
criteria.createAlias("observedSubject", "observedSubject", Criteria.FULL_JOIN);
Но это тоже не сработало. Есть ли способ предотвратить такое поведение?