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 によって返されるオブジェクトのすべての関係は、1 対多か多対 1 かに関係なく、遅延型です。

オブジェクトでは、関連するオブジェクトのプロパティにアクセスするには、ゲッターを呼び出すだけです:)

クエリでは、それは不可能です。リレーション タイプに関係なく、結合はサポートされていません。関連エンティティの ID のみを制約できますが、そのプロパティは制約できません。

于 2013-04-04T18:20:19.757 に答える
0

hibernate-envers のバージョン 4.x 以降では、リスナーを構成する必要はありません。@Audited を使用してエンティティを簡単に監査できます。

于 2016-05-22T04:24:45.213 に答える