Sql 冬眠+;弹簧在范围内获得最大id

Sql 冬眠+;弹簧在范围内获得最大id,sql,spring,hibernate,jakarta-ee,hsqldb,Sql,Spring,Hibernate,Jakarta Ee,Hsqldb,如何使用hibernate+spring获取具有最大id的对象。我只是需要适当的询问。这就是我尝试过的 Student s = new Student(); DetachedCriteria maxId = DetachedCriteria maxId = DetachedCriteria.forClass(Student.class) .setProjection(Projections.max("id")); s = (Student) sessionFactor

如何使用hibernate+spring获取具有最大id的对象。我只是需要适当的询问。这就是我尝试过的

Student s = new Student();

DetachedCriteria maxId = DetachedCriteria maxId = DetachedCriteria.forClass(Student.class)
            .setProjection(Projections.max("id"));

s = (Student) sessionFactory.getCurrentSession()
        .createCriteria(Student.class)
        .add(Restrictions.between("id", 30000, 40000))
        .add(Property.forName("id").eq(maxId)).uniqueResult();
System.out.println(s.getId());
return s;
我还需要在范围内取得成绩,这是重要的条件。例如,我希望学生id在30000到40000之间。我怎样才能做到这一点

我也在玩这段代码

s = (Student) sessionFactory.getCurrentSession()
          .createCriteria(Student.class).add(Restrictions.between("id", 30000,
          40000)).uniqueResult();

只是要提到,结果不应该是一个列表,它应该是一个唯一的结果。

像这样的东西怎么样

   List<Student> results = sessionFactory.getCurrentSession()
                           .createCriteria(Student.class)
                           .setProjection(Projections.max("id"))
                           .add(Restrictions.between("id", 30000, 40000)).list();

   if (results != null && results.size() > 0) {
       s = results.get(0);
   }
   else {
       // not found
   }
List results=sessionFactory.getCurrentSession()
.createCriteria(Student.class)
.setProjection(Projections.max(“id”))
.add(limitions.between(“id”,30000,40000)).list();
if(results!=null&&results.size()>0){
s=结果。获取(0);
}
否则{
//找不到
}

像这样的东西怎么样

   List<Student> results = sessionFactory.getCurrentSession()
                           .createCriteria(Student.class)
                           .setProjection(Projections.max("id"))
                           .add(Restrictions.between("id", 30000, 40000)).list();

   if (results != null && results.size() > 0) {
       s = results.get(0);
   }
   else {
       // not found
   }
List results=sessionFactory.getCurrentSession()
.createCriteria(Student.class)
.setProjection(Projections.max(“id”))
.add(limitions.between(“id”,30000,40000)).list();
if(results!=null&&results.size()>0){
s=结果。获取(0);
}
否则{
//找不到
}

这就是解决方案,我自己设法找到了:

int maxId = (Integer) sessionFactory.getCurrentSession()
                .createCriteria(Student.class)
                .add(Restrictions.between("id", 30000, 40000))
                .setProjection(Projections.max("id")).uniqueResult();
        s.setId(maxId);

这就是解决方案,我自己设法解决了:

int maxId = (Integer) sessionFactory.getCurrentSession()
                .createCriteria(Student.class)
                .add(Restrictions.between("id", 30000, 40000))
                .setProjection(Projections.max("id")).uniqueResult();
        s.setId(maxId);

我还没有测试它,谢谢你的帮助,我已经解决了这个问题,你可以检查我对这个问题的答案。查询的代码是相同的,但我返回的是一个学生而不是一个int。注意uniqueResult,当查询返回多个结果时,这会引发异常。我没有测试它,感谢您的帮助,我已经解决了这个问题,您可以签出我对这个问题的答案。这与查询的代码相同,但我返回的是一个学生而不是一个int。请小心使用uniqueResult,当查询返回多个结果时,这将引发异常。