2013-07-18 13 views
6

Wie kann ich ein Limit für diese hql-Abfrage festlegen? Wenn ich das Limit-Schlüsselwort in die Abfrage einfüge, wird ein Fehler ausgelöst.So legen Sie das Limit für eine Hibernate-Abfrage fest

@Query("from voucher v where v.voucherType.typeDescription = :typeDescription and v.denomination = :denomination") 
public List<Voucher> findByVoucherTypeAndDenomination(@Param("typeDescription") String typeDescription,@Param("denomination") BigDecimal denomination); 

Antwort

13

Wenn Sie Ihre Abfrage die folgenden Add nennen:

.setFirstResult(firstResult).setMaxResults(limit); 

UPDATE

Docs:
http://docs.jboss.org/hibernate/orm/3.6/javadocs/org/hibernate/Query.html#setMaxResults(int)

Wenn Sie EntityManager verwenden, es sein kann:

entityManager.createQuery("yourQuery").setFirstResult(0).setMaxResults(5); 
+0

Bitte wat macht das firstresult in setfirstresult (firstresult) –

+0

repräsentieren @SamuelAnertey es sagt, welche Zeile zur Folge haben, mit zu beginnen. In diesem Fall sagt dieser Aufruf "Gib mir bis zu 5 Ergebnisse, beginnend mit Ergebnis 0". Im Fall von MySQL, wäre es die äquivalent Ihre Abfrage mit der Endung „begrenzen 0,5“. –

3

Sie können zwei Methoden des Abfrageobjekts verwenden.

setFirstResult()

setMaxResults()

aber man kann es nicht in HQL verwenden, da Limit Datenbank-Anbieter abhängig ist so Hibernate nicht ermögliche, durch hql Abfrage

0

Limit war nie eine unterstützte Klausel in HQL. Sie sollen setMaxResults() verwenden.

Verwandte Themen