Java 使用Neo4j服务器的Spring声明性事务管理

Java 使用Neo4j服务器的Spring声明性事务管理,java,spring,spring-boot,kotlin,neo4j,Java,Spring,Spring Boot,Kotlin,Neo4j,我们正在进行一个项目,使用SpringBoot2、Kotlin和neo4j服务器作为我们的数据存储。我只是在玩Spring@Transactional注释。在互联网上进行了相当长的研究之后,我发现不支持使用Neo4j服务器(RESTAPI)的Spring事务,它只支持嵌入式Neo4j。Spring-boot-starter-data-Neo4j用于配置Neo4j 我的代码如下 class ServiceImpl{ @Throws(Throwable::class) @Transac

我们正在进行一个项目,使用SpringBoot2、Kotlin和neo4j服务器作为我们的数据存储。我只是在玩Spring@Transactional注释。在互联网上进行了相当长的研究之后,我发现不支持使用Neo4j服务器(RESTAPI)的Spring事务,它只支持嵌入式Neo4j。Spring-boot-starter-data-Neo4j用于配置Neo4j

我的代码如下

class ServiceImpl{

   @Throws(Throwable::class)
   @Transactional(rollbackFor = [Exception::class])
   public void create() {
       // Code for saving entity
       throw Exception("Failed to save") // Throwing exception intentionally to check rollback
   }
}
即使引发异常,保存的实体也不会回滚。如果在POSTGRES中选择数据库,同样的代码也可以正常工作。但是,如果您对Neo4j使用RESTAPI,则它不适用于Neo4j服务器。互联网称只支持嵌入式neo4j。有没有其他有效处理交易的方法。我知道有编程事务管理,但那将是一个乏味的方法


任何关于这方面的建议都会大有帮助。提前感谢

即使是编程事务也不起作用。当您在调用外部系统时进行HTTP调用(REST就是这样)时,您无法通过HTTP控制事务,因此它不受支持。无论您使用的是声明式还是手动tx-management.@M.Deinum,那么推荐的方法是什么?如何回滚HTTP调用?@M.Deinum。。。是的,我们不能回滚HTTP调用。bolt协议的工作原理是否相同?您使用的Neo4j和SDN版本是什么?。您的配置中是否有
@EnableTransactionManagement
?显示更多的代码。