2014-02-20 10 views
4

В таблице аудита нет таких критериев, чтобы мы могли использовать Criteria.setProjection(Projections.rowCount()), чтобы получить количество строк запроса.Как получить количество строк таблицы аудита с помощью hibernate envers

Мы можем использовать AuditQuery для выполнения аналогичных действий. Но я не мог найти, как установить прогнозы в этом случае. Существует также метод setProjection для AuditQuery, но в качестве параметра он принимает AuditProjection. Есть ли что-то подобное, что я мог бы setProjection(rowCount)?

Благодаря

+0

Http: //docs.jboss. org/envers/api-new/org/hibernate/envers/query/projection/class-use/AuditProjection.html 'AuditProperty.count()'? –

+0

Можно сделать счет на одном поле, но это не я хочу. Я хочу, чтобы число строк было окончательным. Должен возвращать тот же результат, что и AuditQuery.getResultList(). Size(). – user2807385

ответ

7

Вы можете сделать подсчет на заданном поле, например:

getAuditReader().createQuery() 
    .forRevisionsOfEntity(SomeEntity.class, false, true) 
    .addProjection(AuditEntity.id().count()).getSingleResult() 

Или вы можете рассчитывать ревизионные номера:

getAuditReader().createQuery() 
    .forRevisionsOfEntity(SomeEntity.class, false, true) 
    .addProjection(AuditEntity.revisionNumber().count()).getSingleResult() 
+0

Да, мы могли бы получить счет в данном поле, используя AuditProperty.count(). Но, тем не менее, это не означает, что строка подсчитывает весь результат запроса. – user2807385

+0

В любом случае, спасибо за ваш ответ. – user2807385

+0

Если вы добавляете проекцию отсчета в обычный нормальный запрос, вы должны получить то, что вам нужно, нет? – adamw

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

  • Нет связанных вопросов^_^