【问题标题】:Neo4j Procedure and TransactionsNeo4j 程序和事务
【发布时间】:2021-09-17 21:48:27
【问题描述】:

我正在用 Java 为 Neo4j 插件编写一个程序。插件很复杂,我想把插件分成一系列的类。第 1 类是程序本身。类 2 包含一些辅助方法,并且有效。然而,第 3 类是一种不同类型的辅助方法,但它们需要我调用 GraphDatabaseService.Transaction 类来创建节点。从调试来看,这行似乎是有问题的行:

Node newNode = tx.createNode(Label.label("Mylabel"));

在运行了几个实验之后,似乎无法在装饰为@Procedure 的类之外执行事务。真的吗?我在文档中没有看到。有什么解决办法吗?

【问题讨论】:

    标签: java plugins neo4j


    【解决方案1】:

    我想出了这一点,并将分享给那些可能有帮助的人。在 Class 3 中,您需要同时导入 Log 和 Transaction 接口并使用装饰器(我已经知道了):

    import import org.neo4j.graphdb.Transaction;
    import org.neo4j.procedure.Context;
    import org.neo4j.logging.Log;
    
    public class Class 3 {
         @Context
        Public Transaction tx;
        @Context
        Public Log log;
    
        // Put your Methods Here
        
    
        // Put your constructor Here
        // Constructor
        public Class3v(Log log, Transaction tx) {
            this.log = log;
            this.tx = tx;
        }
    }
    
    

    然后,在您编写程序的主类中,您需要将您在该程序中创建的日志和 tx 实例“传递”到上述帮助程序类 3,如下所示:

    // Class1
    import import org.neo4j.graphdb.Transaction;
    import org.neo4j.procedure.Context;
    import org.neo4j.logging.Log;
    
    public class Class1 { 
         
    
        public     @Context
        public Log logClass1;
        @Context
        public Transaction txClass1;
    
        @Procedure(value = "WHATEVER", mode = Mode.WRITE)
        @Description("WHATEVER")
        public Stream<ReturnRecord> nameOfClass1 () {
    
            //  Other Stuff
            // Create Instance of Class 3 Object
            Class3 instanceOfClass3Object = new Class3 (logClass1, txClass1);
         
           
            return Stream.Of(new ReturnRecord());    
        }
        
        public class ReturnRecord () {
            // WHATEVER YOU HAPPEN TO HAVE HERE
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多