值与类型

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

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

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

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

在类型事先未知的情况下,支持使用 Object。但请注意,实际值仍必须是上述类型之一。

表 1. 支持的 Cypher 类型及其在 Java 中的对应类型
Cypher 类型 Java 类型

字符串

字符串

整数

Long

浮点数

双精度浮点数

布尔值

布尔值

Point

org.neo4j.graphdb.spatial.Point

Date

java.time.LocalDate

Time

java.time.OffsetTime

LocalTime

java.time.LocalTime

DateTime

java.time.ZonedDateTime

LocalDateTime

java.time.LocalDateTime

Duration

java.time.temporal.TemporalAmount

节点

org.neo4j.graphdb.Node

关系

org.neo4j.graphdb.Relationship

路径

org.neo4j.graphdb.Path

欲了解更多详情,请参阅 Neo4j Javadocs org.neo4j.procedure.Procedure

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

  • 当提供 java.time.Durationjava.time.Period 时,会创建 Cypher Duration。如果返回 Duration,则仅保留通用接口 java.time.temporal.TemporalAmount

  • 当提供 java.time.OffsetDateTime 时,会创建 Cypher DateTime。如果返回 DateTime,它会被转换为 java.time.ZonedDateTime