2016-04-28 455 views
1

我一直在进行应用程序审计,并成功地连接了Hibernate Envers 4.3.11以捕获创建,更新和删除,但我无法找到关于审计实体读取的任何文档。如何审核Hibernate读Envers?

Envers可能吗?还是最好依靠log4j或类似的东西?

回答

0

我相信这是不可能的。我们有类似的用例,我们使用intercepters来生成我们服务的审计记录。

0

是的,Hibernate Envers可能会审计实体的读取。 以下是从第一版修订表中读取记录的示例。

/*Audit Reader*/ 

public AuditReader getAuditReader() { 
     return AuditReaderFactory.get(getCrntSession()); 
    } 

/*The method to read a record from an entity*/ 

Integer revisionNumber = (Integer) getAuditReader().createQuery() 
       .forRevisionsOfEntity(Employee.class, false, true) 
       .addProjection(AuditEntity.revisionNumber().min()) 
       .getSingleResult(); 

     AuditReader reader = getAuditReader(); 
     Employee emp=reader.findRevision(Employee.class, (Number)revisionNumber); 

/* and if Employee has an createdDate record , we can read it using below*/: 
     System.out.println(emp.getCreatedDate()); 
+1

这看起来像找到以前审计过的记录。我想在每次读取实体后在审计表中存储一条记录。我一直在研究,看来envers不会支持这个操作。可能将不得不拦截请求并直接登录到文件或数据库。 – wsams

相关问题