Envers - 显示关系的审计数据

时间:2013-04-03 17:59:44

标签: java hibernate spring-mvc hibernate-envers

  • 我在我的实体中添加了@Audited;
  • 我创建了我的监听器,将用户ID添加到revinfo;
  • 我可以使用以下方式过滤用户ID,实体类,最小和最大日期的审核数据:

public List buscar(Class clazz,Usuario usuario,java.util.Date inicio,java.util.Date fim){     GregorianCalendar novo = new GregorianCalendar();     novo.setTime(FIM);     novo.add(Calendar.DAY_OF_MONTH,1);

AuditReader reader = AuditReaderFactory.get(getEm());
return reader.createQuery()
        .forRevisionsOfEntity(clazz, false, true)
        .add(AuditEntity.revisionProperty("usuario").eq(usuario))
        .add(AuditEntity.revisionProperty("revtstmp").between(inicio.getTime(), novo.getTime().getTime()))
        .addOrder(AuditEntity.property("id").asc())
        .getResultList();

}

但所有关系都是懒惰的,包括@ManyToOne。

我发现很多关于@OneToMany问题的帖子,但事实并非如此

如何访问这些属性?

PS:我试过,但无法突出显示代码。

2 个答案:

答案 0 :(得分:2)

Envers返回的对象中的所有关系都是惰性的,无论它是一对多还是多对一。

在一个对象中,要访问相关对象的属性,只需调用getter:)

在查询中,这是不可能的。不支持连接,也不管关系类型如何。您只能约束相关实体的ID,但不能约束其属性。

答案 1 :(得分:0)

从hibernate-envers版本4.x开始,您不需要配置监听器。您可以使用@Audited轻松审核实体。