0

在 JPA 中,有 @PrePersist 和 @PreUpdate 注释允许在 CRUD 操作之前进行操作。我试图找出与此等效的 ApsectJ。

我的用例是一个由一个团队构建的 JPA 应用程序,现在想为发生的每个 Pre-Persist 和 Pre-Update 添加一个审计方面,而不向原始实体添加生命周期侦听器。

4

1 回答 1

2

如果实体没有 @PrePersist 和 @PreUpdate 方法,您可以使用 AspectJ 类型间声明 (ITD) 来引入这些方法。

public aspect Audit {
    declare parents: @Entity * implements AuditedEntity;

    public interface AuditedEntity {}

    @PrePersist
    public void AuditedEntity.prePersistAuditing() {
       ... auditing logic
    }

    ... similar code for @PreUpdate
}

如果实体已经有了方法,您可以建议它们进行审计。

于 2011-02-06T21:01:26.250 回答