I would like to get first row from database using JPA Criteria. I use JPA, Hibernate 4.2.7. In SQL, statement looks like:
SELECT * FROM houses WHERE rownum = 1;
My Java code to achive that looks like:
CriteriaBuilder builder = entityManager.getCriteriaBuilder();
CriteriaQuery<House> query = builder.createQuery(House.class);
Root<House> root = query.from(House.class);
query.select(root).where(builder.equal(root.get("rownum"), 1));
TypedQuery<House> tQuery = entityManager.createQuery(query);
House house = tQuery.getSingleResult();
But 'rownum' pseudocolumn cannot be resolved, I get exception:
java.lang.IllegalArgumentException: Unable to resolve attribute [rownum] against path
at org.hibernate.ejb.criteria.path.AbstractPathImpl.unknownAttribute(AbstractPathImpl.java:120)
at org.hibernate.ejb.criteria.path.AbstractPathImpl.locateAttribute(AbstractPathImpl.java:229)
at org.hibernate.ejb.criteria.path.AbstractPathImpl.get(AbstractPathImpl.java:200)
Is is possible, and if so, how to get 'rownum' pseudocolumn with Criteria API? Thanks for any suggestions.