我无法从表中获取最大ID。我们怎样才能获得最大ID。我的查询如下,
Criteria tot = sessionFactory.getCurrentSession().createCriteria(student.class);
tot.add(Restrictions.eq("surveyId",send_Survey));
tot.add(Restrictions.eq("testId", "2" )); // Instead of hard coding as 2 I need to the maximum testId
//tot.addOrder(Order.desc("testId"));
ScrollableResults sc=tot.scroll();
sc.last();
int rowcount=sc.getRowNumber()+1;
System.out.println(" Here is the total count--- "+ rowcount);
如何在查询中将条件设为最大testId
答案 0 :(得分:0)
使用投影。
tot.setProjection(Projection.max("testId"));
答案 1 :(得分:0)
您的代码看起来在SQL和ORM方法之间存在一些混淆。使用Criteria API,您不想指定外键,而是指定实体属性。鉴于像这样的学生班级
public class Student {
private Long id;
private Set<Survey> surveys;
private Set<Test> tests;
... accessor methods etc
}
您的代码看起来更像是
tot.createAlias("surveys", "survey");
tot.createAlias("tests", "test");
tot.add(Restrictions.eq("survey.id",send_Survey));
可能是这样的子查询
DetachedCriteria subquery = DetachedCriteria.forClass(Test.class);
subquery.setProjection(Projections.max("id"));
tot.add(Subqueries.propertyIn("test.id", subquery));