How to get last record from Mysql using Hibernate?

Sami picture Sami · Oct 25, 2012 · Viewed 33.1k times · Source
List<Lahetys> last = session.createQuery("from lahetys order by lahetysNro DESC LIMIT 1").list();

and in the log I got:

INFO: Hibernate: select  from order by  lahetysNro DESC LIMIT 1
WARN: SQL Error: 1064, SQLState: 42000
ERROR: You have an error in your SQL syntax; check the manual that corresponds to your       MySQL server version for the right syntax to use near 'from order by  lahetysNro DESC LIMIT 1' at line 1

What has happend to "from LAHETYS"? What is the best practice to handle that with HQL or/and with SQL?

Another problem:

Lahetys last = (Lahetys)session.createSQLQuery("select * from lahetys order by lahetysNro DESC LIMIT 1").uniqueResult();
session.getTransaction().commit();  

and I get a exception:

Ljava.lang.Object; cannot be cast to Lahetys 

So I can't cast an object to my Lahetys-object, weird?

Thank you! Sami

Answer

JB Nizet picture JB Nizet · Oct 25, 2012

Your HQL query is invalid. LIMIT is not a valid HQL clause. To do that in Hibernate, just do

Query query = session.createQuery("from lahetys order by lahetysNro DESC");
query.setMaxResults(1);
Lahetys last = (Lahetys) query.uniqueResult();