2

我目前正在开发一个使用 Spring Data Neo4j 的项目。每当创建 NodeEntity 时,我都想创建一个引用的 Audit NodeEntity,其中包含创建日期和用户。

我想出的一个解决方案是编写一个 AOP Aspect,它与我的服务层的 create 方法挂钩。这适用于没有级联的实体,但级联的实体呢?这没有在我的服务层中显式传递,因此我的 AOP 类不会拦截它们。JPA 中是否有类似实体侦听器的概念,或者我如何才能融入这种机制?

4

2 回答 2

5

从 Spring Data Neo4j 2.2 开始,我们可以使用 AuditingEventListener 来审计实体。Spring Data 1.5 提供了@CreatedDate@CreatedBy@LastModifiedDate@LastModifiedBy注解。您可以按如下方式使用它们:

@NodeEntity
public class Entity {

    @GraphId
    private Long id;

    @CreatedDate
    private Long date;

}

确保配置 AuditingEventListener:

@Configuration("db")
@EnableNeo4jRepositories(basePackages = { "your.package" })
@EnableTransactionManagement
public class DatabaseSpringConfiguration extends Neo4jConfiguration {

    @Bean(destroyMethod = "shutdown")
    public EmbeddedGraphDatabase graphDatabaseService() {
        return new EmbeddedGraphDatabase("data/neo4j.db");
    }

    @Bean
    public AuditingEventListener auditingEventListener() throws Exception {
        return new AuditingEventListener(new IsNewAwareAuditingHandler<Object>(isNewStrategyFactory()));
    }

}
于 2013-02-14T09:18:34.833 回答
1

Spring Data Neo4j (SDN)在 2.1 版本中引入了生命周期事件的概念。这也适用于级联实体。

于 2012-11-27T16:18:58.413 回答