0
我正試圖在neo4j 3.1中測試用戶定義的函數。所以我寫了這一點:內部開發的用戶定義函數獲取「未知函數」
public class Udf
{
@Context
public GraphDatabaseService db;
@Context
public Log log;
@UserFunction("test.id")
public Long id(@Name("node") Node node)
{
return node.getId();
}
}
和測試功能是這樣的:
public class UdfTest
{
@Rule
public Neo4jRule neo4j = new Neo4jRule()
.withProcedure(Udf.class);
@Test
public void shouldBeAbleToExtractIdProperty() throws Throwable
{
try (Driver driver = GraphDatabase.driver(neo4j.boltURI() , Config.build().withEncryptionLevel(Config.EncryptionLevel.NONE).toConfig()))
{
Session session = driver.session();
long nodeId = session.run("CREATE (p) RETURN test.id(p)")
.single()
.get(0).asLong();
assertEquals(nodeId, 0);
}
}
}
當我運行測試系統提示:
org.neo4j.driver.v1.exceptions.ClientException: Unknown function 'test.id' (line 1, column 19 (offset: 18))
"CREATE (p) RETURN test.id(p)"
^
當我改變@UserFunction
到@Procedure
和一堆其他的變化,我可以使用CALL .. YIELD
子句調用完全相同的方法。
有人可以告訴我我做錯了什麼嗎?