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

    public <T extends BaseModel> List<Object[]> buscar(Class<T> 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:我试过了,但无法突出显示代码。

4

2 回答 2

3

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

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

在查询中,这是不可能的。不支持连接,无论关系类型如何。您只能限制相关实体的 id,但不能限制其属性。

于 2013-04-04T18:20:19.757 回答
0

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

于 2016-05-22T04:24:45.213 回答