Session session = ...;
Transaction tx = session.beginTransaction();
try {
int c;
c = session.createSQLQuery("insert into TEST (T, O) values ('A', 'Z')").executeUpdate();
assertEquals(1, c);
c = session.createSQLQuery("insert into TEST (T, O) values ('B', 'Z')").executeUpdate();
assertEquals(1, c);
c = session.createSQLQuery("insert into TEST (T, O) values ('C', 'Z')").executeUpdate();
assertEquals(1, c);
c = session.createSQLQuery("insert into TEST (T, O) values ('D', 'Z')").executeUpdate();
assertEquals(1, c);
Query q = session.createSQLQuery("select T\nfrom\n TEST order by T asc");
q.setFirstResult(0);
q.setMaxResults(2);
List<Object> l = q.list();
assertEquals(2, l.size());
assertEquals("A", l.get(0));
assertEquals("B", l.get(1));
q.setFirstResult(2);
l = q.list(); assertEquals(2, l.size());
assertEquals("C", l.get(0));
assertEquals("D", l.get(1));
} finally {
tx.rollback();
session.close();
}