user defined function
或
procedure
.
A.
只是一个转换器,它是只读的,返回一个类型,可以是:
long, Long, double, Double, boolean, Boolean, String, Node, Relationship, Path, Map<String, Object, or List<T>
A.
可以接受参数,对数据库执行操作,并返回结果(作为流)。
在代码中,您定义了
user function
,我想你想要的是
程序
ResourceIterator
到
Neo4j Type System
.
您必须进行这些更改:
-
@UserFunction(value = "boris.example")
通过
@Procedure(value = "boris.example", mode = Mode.READ)
-
Stream<Node>
干杯
编辑
程序必须返回
pojo
或简单类型。所以你必须把你的
Node
在这样的pojo中:
public class FindNode {
@Context
public GraphDatabaseService db;
@Context
public Log log;
@Procedure(value = "boris.getAllNodesWithProperty", mode = Mode.READ)
@Description("boris.getAllNodesWithProperty - finds Node by ID and return defined Property")
public Stream<NodeResult> passName(@Name("nodeId") long nodeId)
{
Node node = db.getNodeById( nodeId );
Object nameVal = node.getProperty("name");
Label label = Label.label("VersionableObject");
ResourceIterator<Node> nodes = db.findNodes(label, "name", nameVal);
return nodes.stream().map( item -> new NodeResult(item));
}
public class NodeResult {
public final Node node;
public NodeResult(Node node) {
this.node = node;
}
}
}