标准中的get max id问题?

时间:2014-05-05 16:25:43

标签: hibernate criteria hibernate-criteria

我无法从表中获取最大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

2 个答案:

答案 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));