当前位置: 首页 > 知识库问答 >
问题:

使用Spring数据Neo4j进行审核

皮承基
2023-03-14

我目前正在从事一个利用Spring数据Neo4j的项目。每当创建节点时,我都希望创建一个包含创建日期和用户的引用审核节点。

我提出的一个解决方案是编写一个AOP方面,它与我的服务层的create方法挂钩。这对于没有级联的实体很好,但是级联的实体呢?它们没有在我的服务层中显式传递,因此我的AOP类不会拦截它们。JPA中是否有类似实体侦听器的概念,或者如何连接到该机制中?

共有2个答案

陈业
2023-03-14

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

糜鸿风
2023-03-14

由于SpringDataNeo4J2.2,我们可以使用AuditingEventListener对实体进行审计。SpringData1.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()));
    }

}
 类似资料:
  • 我有一个带有spring Boot(v2.3.3)和spring数据的spring web应用程序。我的评估表包含以下列: Id 我的用例是表中名称和地址的任何更改评估应该创建一个新行,版本以相同的id递增。 因此,基本上只有当地址或姓名更新时,才能在评估表中插入新记录。下面是一个示例: 现有记录: 例如,名称已更新为Ryan,应该有两行,如下所示: 因此,基本上,任何名称和地址的变化都应在评估表

  • 我的可见性没有被索引吗?还是我不该这么做?我没有尝试用字符串更改可见性属性,我认为这应该有效,因为我有其他可以成功查询的字符串属性。使用'in'操作符是一个额外的好处! 编辑1:我使用的是spring-data-neo4j2.0.1.release。我试图在单元测试中使用,但是我刚刚意识到在使用默认配置运行服务器时可以工作,但是在单元测试中仍然不能工作。而且,即使在运行服务器时,'IN'子句仍然会

  • 我开始使用Neo4j和Spring Data Neo4j的项目。我希望我的程序使用已经包含我的数据的本地数据库(而不是每次启动时加载数据),因为我有很多数据需要加载到数据库中。为了实现这个目标,我尝试设置一个用我的数据填充数据库的测试用例。但是,在我的测试完成后,数据库中的数据似乎不会持久:我使用neo4j控制台/shell查看数据库,发现它是空的。 我已经构建了一个小的例子项目,也不工作。任何对

  • 问题内容: 我正在为项目使用Spring Data JPA和Spring Boot。 我对对象(创建/更新/删除)有审计要求。我可能还需要获取特定对象的审核修订。我已经在网上检查过Spring Data Envers无法获得修订并且不跟踪删除? 所以我的问题是: 1)我们可以将Hibernate Envers与Spring数据JPA集成吗? 2)我们有本机查询,HQL和Spring数据JPA更新/

  • Neo4j 2.0。0已发布。所以我更新了neo4j版本2.0。0.M6到2.0。0.0发布。并尝试在我的网站中更新模型,但出现异常。 组织。springframework。刀。DataIntegrityViolationException:唯一属性类java。lang.String rankStatId rel:false idx:true被设置为重复值3073631_99 MY SDN版本是2

  • 我正在使用SDN和嵌入式neo4j。我必须使用bean验证,但它不起作用。null正在数据库中保存,没有任何异常。 依赖是 实体类 控制器是 我使用的是sping-data-neo4j 3.2.0。发布