在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: 即使标记为成功,交易也会回滚
请帮助我尽快解决。
答案 0 :(得分:1)
我已经解决了这个问题。实际上,当我们点击存储过程时,它会隐式打开一个事务,所以如果你试图在同一个线程中打开另一个事务。它给出了问题。