Hibernate top N строк HQL-запроса - PullRequest
       6

Hibernate top N строк HQL-запроса

2 голосов
/ 12 декабря 2010

Я использую следующий код для выполнения HQL-запроса с Hibernate:

String myHqlQuery = "select from MyTable where Something = ? order by SomeVal";
// Set bind values ...
getHibernateTemplate().find(myHqlQuery, bindParams);

Теперь я хочу выбрать из таблицы N верхних строк.Я знаю, что в mySql есть ключевое слово LIMIT, которого нет в HQL.Я также знаю, что в Hibernate есть метод setMaxResults(), который вы можете запустить на объекте Query.

Мой вопрос: есть ли способ добавить ограничение «limit» без необходимости слишком сильно менять мой код(т.е. выполнение запроса через объект HibernateTemplate)?

Ответы [ 2 ]

2 голосов
/ 03 октября 2012

Код ниже работает для меня

    HibernateTemplate ht = getHibernateTemplate();
    ht.setMaxResults(10);
    List<Object> obj= ht.findByNamedQueryAndNamedParam("namedQuery",
            new String[] { "parameter1" },
            new Object[] { parameter1 });

Так что я думаю, что вы должны сделать:

String myHqlQuery = "select from MyTable where Something = ? order by SomeVal";

// Set bind values ...

HibernateTemplate ht = getHibernateTemplate();

ht.setMaxResults(10);

ht.find(myHqlQuery, bindParams);
0 голосов
/ 05 августа 2016

использование

org.springframework.data.domain.Pageable

int numberOfItems = 10;

Pageable pageableTop = new PageRequest(0, numberOfItems);
yourRepository.findYourEntity(pageableTop);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...