用Envers查询历史数据步骤:
1. 获取AuditReader对象并创建Query
AuditReader auditReader = AuditReaderFactory.get(sessionFactory.getCurrentSession());
//查询Account某个版本的历史数据,结果集为AccountImpl的List
AuditQuery query = auditReader.createQuery().forEntitiesAtRevision(AccountImpl.class, 2);
//查询Account的所有历史数据
//第二个参数selectEntitiesOnly(结果集是否包含版本信息):
//true 结果集为Object数组的List,Object数组中包含了AccountImpl和版本信息(时间,版本等)
//fasle 结果集为AccountImpl的List
//第三个参数selectDeletedEntities(是否查询删除操作的版本)
//AuditQuery query = auditReader.createQuery().forRevisionsOfEntity(AccountImpl.class, true, false);
2. 添加查询信息
a. addProjection (AuditProjection projection)查询字段或统计
- 查询 : 所需字段,不重复值(distinct)
- 统计 : 数量(count),不重复值数量(distinctCount),最大值(ma