如何使用hibernate + spring获取具有max 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();
只是提到结果不应该是一个应该是唯一结果的列表。
答案 0 :(得分: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
}
答案 1 :(得分:0)
这是解决方案,我自己设法解决了这个问题:
int maxId = (Integer) sessionFactory.getCurrentSession()
.createCriteria(Student.class)
.add(Restrictions.between("id", 30000, 40000))
.setProjection(Projections.max("id")).uniqueResult();
s.setId(maxId);