J'ai écrit une requête à retourner comme ci-dessous;Mise en œuvre de la radiomessagerie avec hibernate envers
AuditReader reader = AuditReaderFactory.get(entityManager);
List<Object[]> changes = reader.createQuery()
.forRevisionsOfEntity(cls, true, true)
// Various conditions
.getResultList();
Ce que je voudrais faire est d'obtenir les résultats dans les pages comme on peut le faire dans PagingAndSortingRepository<T,ID>
, j'ai cette séance de travail presque comme indiqué ci-dessous
int start = page.getOffset();
int end = (start + page.getPageSize()) > history.size() ? history.size() : (start + page.getPageSize());
Page page = new PageImpl<HistoryEntry>(history.subList(start, end), page, history.size());
Mon problème est que lorsque vous avez terminé de cette façon que je impossible de trier les données comme prévu, c'est-à-dire que size=2&sort=action,desc
ne triera pas quelle que soit la valeur que j'utilise (asc/desc).
history
est une liste d'objets avec les champs suivants;
private String timestamp;
private String userName;
private String objectName;
private String objectType;
private String action;
private String field;
private String oldValue;
private String newValue;
Pour implémenter la pagination, le filtrage et le tri par ce besoin serait Envers à faire par la requête originale ou pourrait Envers regarder après la pagination?
Je suis tombé sur cette question en essayant de réaliser la même chose. En y repensant, résoudriez-vous toujours le problème de l'obtention des résultats paginés de HistoryEntries de cette façon? (ou, auriez-vous maintenant créé un référentiel?) – Spork