Spring boot @Spring中的事务数据Neo4j 6

Spring boot @Spring中的事务数据Neo4j 6,spring-boot,neo4j,spring-data-neo4j,Spring Boot,Neo4j,Spring Data Neo4j,我有一个使用Neo4j SDN(v6.1.1)的简单Spring引导项目。问题是,当我用一个事务处理来标记一个方法时,似乎它没有考虑这个问题(与我使用NeN4J OGM和以前版本的SDN相反)。当我在“template.save”之后检查数据库时,更新在数据库中可见,甚至在整个方法运行之前。我该怎么办 方法: @Transactional void method() { template.deleteAll(Person.class); template.dele

我有一个使用Neo4j SDN(v6.1.1)的简单Spring引导项目。问题是,当我用一个事务处理来标记一个方法时,似乎它没有考虑这个问题(与我使用NeN4J OGM和以前版本的SDN相反)。当我在“template.save”之后检查数据库时,更新在数据库中可见,甚至在整个方法运行之前。我该怎么办

方法:

@Transactional
void method() {
        template.deleteAll(Person.class);
        template.deleteAll(Club.class);
        // save by Neo4jTemplate
        Person person_1 = template.save(new Person("Reza", "Mahdavi", 22, new Member(new Club("Iran"), "2021")));
        // Save by Repository
        Person person_2 = repository.save(new Person("Ali" + new Random(System.currentTimeMillis()).nextInt(), "Alavi", 20, new Member(new Club("Iran"), "2020")));
        // Query by Repository
        Person ali = repository.findByName("Ali");
        // Query by Neo4jTemplate
        Optional<Person> reza = template.findById(person_1.getId(), Person.class);
        // Custom query
        Result result = driver.session().run("Match(n) return count(n) as count", TransactionConfig.builder().build());
        System.out.println("Entity Count: " + result.single().values().get(0));
}
@Transactional
void方法(){
template.deleteAll(Person.class);
template.deleteAll(Club.class);
//由Neo4jTemplate保存
Person Person_1=模板.save(新成员(“Reza”,“Mahdavi”,22岁,新成员(“伊朗俱乐部”),“2021”);
//按存储库保存
Person Person_2=repository.save(新成员(“阿里”+新随机(System.currentTimeMillis()).nextInt(),“阿拉维”,20岁,新成员(新俱乐部(“伊朗”),“2020”);
//按存储库查询
Person ali=repository.findByName(“ali”);
//Neo4jTemplate查询
可选的reza=template.findById(person_1.getId(),person.class);
//自定义查询
结果=driver.session().run(“匹配(n)将计数(n)返回为计数”,TransactionConfig.builder().build());
System.out.println(“实体计数:+result.single().values().get(0));
}
此外,我在日志中有这样的句子:

无需为[org.springframework.data.neo4j.repository.support.SimpleNeo4jRepository.toString]创建事务:此方法不是事务性的


代码

该方法需要具有公共可见性。否则Spring将无法围绕此创建所需的基础设施(与代理相关)

文档中有更多关于这方面的信息 链接部分下的几行有一个框

使用代理时,应应用@Transactional注释 仅适用于具有公共可见性的方法。如果您确实注释了protected, 带有@Transactional注释的私有或包可见方法, 不会引发错误,但带注释的方法不会显示 已配置事务设置。如果需要注释非公共 方法,考虑使用AspectJ(稍后描述)。