2012-05-23 2 views
31

Можно создать дубликат:
Select top 1 result using JPAкак написать заказ на и ограничить запрос в JPA

я хотел бы принести 10 лучших результатов, основанных на «totalTradedVolume», поданной в моей таблице «MasterScrip» , когда я пишу следующий запрос:

Collection<MasterScrip> sm=null; 
    sm=em.createQuery("select m from MasterScrip m where m.type = :type order by m.totalTradedVolume limit 2").setParameter("type", type).getResultList(); 

я получаю следующее отл ect:

Caused by: java.lang.IllegalArgumentException: An exception occurred while creating a query in EntityManager: 
Exception Description: Syntax error parsing the query [select m from MasterScrip m where m.type = :type order by m.totalTradedVolume limit 2], line 1, column 78: unexpected token [limit]. 
Internal Exception: NoViableAltException([email protected][]) 

что-то не так с моим запросом jpa. Может ли кто-нибудь исправить меня?

+1

проверить мой asnwer на аналогичный вопрос http://stackoverflow.com/questions/6708085/select-top-1 -result-using-jpa/6708151 # 6708151 – Jorge

+0

Это не дубликат. Подобный вопрос извлекает произвольный результат, этот вопрос касается получения результата с наивысшим значением для m.totalTradedVolume. –

ответ

59

limit не признан в JPA. Вместо этого вы можете использовать метод query.setMaxResults:

sm = em.createQuery("select m from MasterScrip m where m.type = :type 
     order by m.totalTradedVolume") 
    .setParameter("type", type) 
    .setMaxResults(2).getResultList() 
+4

Почему слово «предел» не работает? –

+6

@KorayTugay, я знаю, что слишком поздно ответить на ваш вопрос, но для того, чтобы принести пользу другим, 'limit' специфичен для некоторых баз данных (mysql), но' HQL' нацелен на работу со всей поддерживаемой hibernate базой данных. –

25

Вы можете работать его с Query setFirstResult and setMaxResult методами

Смежные вопросы