У меня есть Java-код, который использует Hibernate 5.2 CriteriaBuilder.
Код возвращает этот оператор SQL ниже
(JAVA)
CriteriaBuilder countBuilder = session.getCriteriaBuilder();
CriteriaQuery<Long> criteriaCount = builder.createQuery(Long.class);
Root<Transaction> transactions = criteriaCount.from(Transaction.class);
criteriaCount.select(builder.count(transactions));
criteriaCount.where(generatePredicate(tRequest, countBuilder, transactions, dateFrom, dateTo));
count = session.createQuery(criteriaCount).setMaxResults(rowNum).getSingleResult();
(SQL)
SELECT COUNT(*)
FROM TRANSACTIONS
WHERE MERCHANT_ID IN (8000011) FETCH FIRST 1000 ROWS ONLY
Я хочу изменить этот Java-код так, чтобы я получил этот SQL-оператор ниже
SELECT COUNT(*)
FROM (SELECT *
FROM TRANSACTIONS
WHERE MERCHANT_ID IN (8000011) FETCH FIRST 1000 ROWS ONLY)
Пожалуйста, дайте мне знать, как его изменить.
Кроме того, в Hibernate 3 была возможность добавить ограничение SQL для «Критерия», как это
criterionFilter = Restrictions.and(criterionFilter, Restrictions.sqlRestriction("rownum <= ?", 1000, StandardBasicTypes.INTEGER))
возможно ли это в спящем режиме 5?