2016-02-23 62 views
0

我在我的数据库中有一些数据,并且每当数据存储时都会自动增加一个id列。如何检索最大id值并存储在int变量中?

出于某种目的,我想检索最后添加的行或最大id(也是最后一行)的行。我写了下面的查询为:

List<Student> student = sessionFactory.getCurrentSession().createQuery("SELECT * FROM Student ORDER BY id DESC") 

我不知道它是否是做正确的方式,但在执行我收到错误,如意外的标记:*。

寻找您的宝贵建议和提前致谢。

public void storeData(Student student) 
{ 
    List<Student> std = sessionFactory.getCurrentSession().createQuery("FROM Student ORDER BY id DESC limit 1").list(); //getting error while executing this statement(unexpected token limit) 

    System.out.println(std.get(0).getNumber()); //getting error while executing it 
} 

我通过storeData类中的学生对象发送学生数据。我希望在存储数据后,我可以访问存储的数据的值,例如我想将数值存储在变量中以供进一步处理。但是在执行上面的操作时出现错误。

+0

你在使用Hibernate吗? – Kayaman

+0

是的,我正在使用Hibernate @kayaman – Amit

+0

那么你为什么要编写SQL而不是HQL? – Kayaman

回答

3

为什么不简单的“最高”的ID?

select max(id) from student 

使用会话工厂:

sessionFactory.getCurrentSession().createQuery("select max(id) from student"); 
+0

感谢您的建议,并且我想存储max(id)是一个int变量。是否可以使用以下语法执行相同操作: 列表 student = sessionFactory.getCurrentSession()。createQuery(“select max(id)from Student”)。list(); System.out.println(student.get(0).getId()); – Amit

0
SELECT * FROM Student ORDER BY id DESC limit 1 
0

从查询中删除SELECT *,HQL doesn't need it

List<Student> student = sessionFactory.getCurrentSession().createQuery("FROM Student ORDER BY id DESC"); 
0

设置最大结果选项.setMaxResults(1)

有两种方式

1)名单为使用.setMaxResults(1).LIST()

所以你的发言将成为输出,你需要遍历它

List <Student> student = sessionFactory.getCurrentSession().createQuery("FROM Student ORDER BY id DESC").setMaxResults(1).list(); 

2)因为你只需要最后的结果,那么你也可以去.setMaxResults(1).uniqueResult()

uniqueResult() : Convenience method to return a single instance that matches the query, or null if the query returns no results. 

所以你的声明将成为

Student student = sessionFactory.getCurrentSession().createQuery("FROM Student ORDER BY id DESC").setMaxResults(1).uniqueResult(); 

使用可以节省您的ID(最大)以任何方法int变量

[注]:从查询中删除限制1

希望它将帮助你

+0

谢谢!但是,我可以存储在一个int变量的ID值 – Amit

+0

你只想要id? 或者你可以从学生对象中获得id – Pallavi

+0

实际上,在名为“number”(int数据类型)的表中有一列,我想检索该值并将其存储在另一个变量中。或者存储在数据库中的最后一个数字值。我尝试了很多查询,但无法将其转换为整数。 – Amit

相关问题