值和类型

过程或函数的输入输出必须是支持的类型之一,如Cypher 手册 → 值和类型中所述。

复合类型通过以下方式支持

  • List<T>,其中T是支持的类型之一,以及

  • Map<String, Object>,其中映射中的值必须具有支持的类型之一。

当类型事先未知时,支持使用Object。但是请注意,实际值仍必须具有上述类型之一。

表 1. 支持的 Cypher 类型及其在 Java 中的等效项
Cypher 类型 Java 类型

字符串

字符串

整数

长整数

浮点数

双精度浮点数

布尔值

布尔值

org.neo4j.graphdb.spatial.Point

日期

java.time.LocalDate

时间

java.time.OffsetTime

本地时间

java.time.LocalTime

日期时间

java.time.ZonedDateTime

本地日期时间

java.time.LocalDateTime

持续时间

java.time.temporal.TemporalAmount

节点

org.neo4j.graphdb.Node

关系

org.neo4j.graphdb.Relationship

路径

org.neo4j.graphdb.Path

有关更多详细信息,请参见Neo4j Javadocs org.neo4j.procedure.Procedure.

在两种情况下,一种 Cypher 类型会映射到多种 Java 类型。在这种情况下,类型信息会丢失。如果从过程中返回以下对象,则无法重新创建原始类型

  • 当提供java.time.Durationjava.time.Period时,会创建 CypherDuration。如果返回Duration,则只有公共接口java.time.temporal.TemporalAmount保留下来。

  • 当提供java.time.OffsetDateTime时,会创建 CypherDateTime。如果返回DateTime,则会将其转换为java.time.ZonedDateTime