我无法选择相应学生的TestId为max的行,我编写了如下代码,但未获得所需的输出。我的代码如下

Criteria c = sessionFactory.getCurrentSession().createCriteria(student.class).setProjection(Projections.projectionList().add(Projections.property("answer"),"answer"));
c.add(Restrictions.eq("surveyId",send_Survey));
//c.add(Restrictions.eq("testId", "1" ));
//c.setProjection(Projection.max("testId"));
c.addOrder(Order.desc("testId"));
c.add(Restrictions.eq("questionid",FinalQuestionsOne));
List<String> age=c.list();


我的表结构如下



我需要以下输出。选择最大TestId的答案列。如何使用条件查询获取输出

最佳答案

因此,我认为您要获取的内容可以通过以下sql来实现:

SELECT TestId, MAX(answer) WHERE questionId = 1 GROUP BY TestId;


您应该可以使用以下Hibernate实现此目的:

sessionFactory.getCurrentSession().createCriteria(student.class).setProjection(Projections.projectionList()
                        .add(Projections.property("TestId"), "TestId")
                        .add(Projections.groupProperty("TestId"))
                        .add(Projections.max("answer")));

10-02 04:50