java - How to use LIMIT in spring within sql query? -
somehow cannot use limit
qualifier within sql query using spring-data-jpa
:
@query("select p person p p.company.id = :id order p.name desc limit 3")
what wrong here?
caused by: org.hibernate.hql.internal.ast.querysyntaxexception: unexpected token: limit near line 1, column 146 @ org.hibernate.hql.internal.ast.querysyntaxexception.convert(querysyntaxexception.java:91) @ org.hibernate.hql.internal.ast.errorcounter.throwqueryexception(errorcounter.java:109) @ org.hibernate.hql.internal.ast.querytranslatorimpl.parse(querytranslatorimpl.java:304) @ org.hibernate.hql.internal.ast.querytranslatorimpl.docompile(querytranslatorimpl.java:203) @ org.hibernate.hql.internal.ast.querytranslatorimpl.compile(querytranslatorimpl.java:158) @ org.hibernate.engine.query.spi.hqlqueryplan.<init>(hqlqueryplan.java:126) @ org.hibernate.engine.query.spi.hqlqueryplan.<init>(hqlqueryplan.java:88) @ org.hibernate.engine.query.spi.queryplancache.gethqlqueryplan(queryplancache.java:190) @ org.hibernate.internal.abstractsessionimpl.gethqlqueryplan(abstractsessionimpl.java:301) @ org.hibernate.internal.abstractsessionimpl.createquery(abstractsessionimpl.java:236) @ org.hibernate.internal.sessionimpl.createquery(sessionimpl.java:1800) @ org.hibernate.jpa.spi.abstractentitymanagerimpl.createquery(abstractentitymanagerimpl.java:328) ... 48 more
limit
not part of jpql. mechanism available in current release version (1.6.0.release of time of writing) pagination:
interface personrepository extends repository<person, long> { @query("...") list<person> findlimited(..., pageable pageable); }
this can used follows:
repository.findlimited(..., new pagerequest(0, 10));
this return first ten results of query defined in @query
annotation.
the current master branch of spring data jpa contains new feature allow rewrite above query follows:
interface personrepository extends repository<person, long> { list<person> findtop3bycompanyorderbyname(company company); }
as of version 1.7.0.m1 (feature already available in snapshots) query derivation mechanism understand top
, first
in subject clause limit number of results returned.
Comments
Post a Comment