我有一个由此构建的 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 行)之后,有 18 个选择来获取observedSubject 实体。我试过了:
criteria.setFetchMode("observedSubject", FetchMode.JOIN);
但这没有用。作为一种在黑暗中的刺,我试过:
criteria.createAlias("observedSubject", "observedSubject", Criteria.FULL_JOIN);
但这也不起作用。有什么办法可以防止这种行为?