获取以下错误" org.neo4j.kernel.api.exceptions.TransactionFailureException:即使标记为成功,也会回滚事务"在neo4j

时间:2016-06-29 06:23:05

标签: java neo4j graph-databases

在neo4j中写入存储过程,然后将其添加到neo4j插件中。当调用存储过程获取错误"

  

org.neo4j.kernel.api.exceptions.TransactionFailureException:   即使标记为成功,交易也会回滚

以下是有关我的工作方式的一些信息。

@Procedure("example.search12")
public Stream<SearchHit> searchData(
    @Name("phoneNumber") String phoneNumber, 
    @Name("searchText") String searchText) throws InterruptedException, ExecutionException {

    List<SearchHit> resultList = new ArrayList<>();
    try {
        Node startNode = getStartNode(phoneNumber);
        if(null == startNode){
            System.out.println("Phone Number not found::"+ phoneNumber);
            return null;
        }
        final Set<Node> results = new LinkedHashSet<>();
        innerSeacrh(db, startNode, searchText, 1,results);
        List<Node> nodes = new ArrayList<Node>();

        for (Node node : results) {
            System.out.println(node.getProperty("fullname"));
            nodes.add(node);
            resultList.add(new SearchHit(node));
        }
    } catch(Exception ex) {
        ex.printStackTrace();
    }

    return resultList.stream();
}

public static class SearchHit {
    // This records contain a single field named 'nodeId'
    public long nodeId;

    public SearchHit(Node node) {
        this.nodeId = node.getId();
    }
}

我通过以下命令调用存储过程:

call example.search12("919818131043","anu");

低于错误。

  

org.neo4j.kernel.api.exceptions.TransactionFailureException:   即使标记为成功,交易也会回滚

请帮助我尽快解决。

1 个答案:

答案 0 :(得分:1)

我已经解决了这个问题。实际上,当我们点击存储过程时,它会隐式打开一个事务,所以如果你试图在同一个线程中打开另一个事务。它给出了问题。