【发布时间】:2019-04-15 03:49:45
【问题描述】:
我有使用 Hibernate 5.2 CriteriaBuilder 的 Java 代码。 代码在下面返回此 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 Restriction 添加到“Criterion”
criterionFilter = Restrictions.and(criterionFilter, Restrictions.sqlRestriction("rownum <= ?", 1000, StandardBasicTypes.INTEGER))
在hibernate 5中可以吗?
【问题讨论】: