2

私は現在、SpringDataNeo4jを利用するプロジェクトに取り組んでいます。NodeEntityが作成されるたびに、作成日とユーザーを含む参照されたAuditNodeEntityを作成したいと思います。

私が思いついた解決策は、サービスレイヤーのcreateメソッドにフックするAOPアスペクトを作成することです。これは、カスケードされていないエンティティでは正常に機能しますが、カスケードされたエンティティについてはどうでしょうか。これはサービスレイヤーで明示的に渡されないため、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 に答える