0
neo4jの自動インクリメント機能を実装する必要があります。 私は次のように(this answerにthaks)ユーザー定義の手順でそれをやった:ユーザー関数でneo4jの自動インクリメントを実装する方法
public class Sequence {
public @Context GraphDatabaseService db;
@Procedure(name = "sequence.id", mode = Mode.WRITE)
@Description("sequence.id(name, length) - return next 'length' value(s) form sequence with name 'name'")
public Stream<ListResult> sequence_id(@Name("name") final String name,
@Name(value = "length", defaultValue = "1") Long length) {
try (
final Result results = db.execute(
"WITH {length} as length\n" +
"MERGE (id:UniqueId{name:{name}})\n" +
"SET id.count = coalesce(id.count, 1) + length\n" +
"WITH length, id.count - length AS base\n" +
"UNWIND range(0, length - 1) AS idx\n" +
"RETURN collect(base + idx) AS value", with("name", name, "length", length))) {
return results.<List>columnAs("value").map(ListResult::new).stream();
}
private Map<String, Object> with(String key1, Object value1, String key2, Object value2) {
Map<String, Object> map = new HashMap<>();
map.put(key1, value1);
map.put(key2, value2);
return map;
}
...
}
をしかし、私は正確に必要なのは同じ機能を持つ関数です。
機能でこれを行うにはどうすればいいですか?ユーザー定義関数からプロシージャーを呼び出すことは可能ですか?誰かが私に有用な例を教えてもらえますか?
おかげで、