hibernate верхние N строк HQL-запрос

Я использую следующий код для выполнения запроса 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)?


person kli    schedule 12.12.2010    source источник


Ответы (2)


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

    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);
person amartell    schedule 03.10.2012

использовать

org.springframework.data.domain.Pageable

int numberOfItems = 10;

Pageable pageableTop = new PageRequest(0, numberOfItems);
yourRepository.findYourEntity(pageableTop);
person izy    schedule 04.08.2016