我无法选择相应学生的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")));