1

如何使用 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();

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

4

2 回答 2

1

这样的事情呢?

   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
   }
于 2013-07-08T10:48:20.327 回答
0

这是解决方案,我自己设法弄清楚:

int maxId = (Integer) sessionFactory.getCurrentSession()
                .createCriteria(Student.class)
                .add(Restrictions.between("id", 30000, 40000))
                .setProjection(Projections.max("id")).uniqueResult();
        s.setId(maxId);
于 2013-07-08T11:32:13.517 回答