基于约定的映射

Neo4j Converter 有一些约定,用于在没有提供其他映射元数据时映射对象。 约定是:Spring中文文档

  • 短 Java 类名按以下方式映射到主标签: 该类映射到主标签。com.bigbank.SavingsAccountsavingsAccountSpring中文文档

  • 转换器使用在其注册的任何 Spring Converter 来覆盖对象属性到节点字段和值的默认映射。Spring中文文档

  • 对象的字段用于在图形中的字段之间进行转换。 不使用公共属性。JavaBeanSpring中文文档

  • 如果有一个非零参数构造函数,其构造函数参数名称与节点的顶级属性名称匹配,则使用该构造函数。 否则,将使用零参数构造函数。 如果存在多个非零参数构造函数,则会引发异常。Spring中文文档

我们支持开箱即用的广泛转换。 在官方驱动程序手册中查找支持的密码类型列表:类型映射Spring中文文档

同样支持包装器类型的基元类型。Spring中文文档

域类型 Cypher类型 直接映射到本机类型

java.lang.BooleanSpring中文文档

布尔Spring中文文档

Spring中文文档

boolean[]Spring中文文档

布尔值列表Spring中文文档

Spring中文文档

java.lang.LongSpring中文文档

整数Spring中文文档

Spring中文文档

long[]Spring中文文档

整数列表Spring中文文档

Spring中文文档

java.lang.DoubleSpring中文文档

Spring中文文档

Spring中文文档

double[]Spring中文文档

浮动列表Spring中文文档

Spring中文文档

java.lang.StringSpring中文文档

字符串Spring中文文档

Spring中文文档

java.lang.String[]Spring中文文档

字符串列表Spring中文文档

Spring中文文档

byte[]Spring中文文档

字节数组Spring中文文档

Spring中文文档

java.lang.ByteSpring中文文档

长度为 1 的 ByteArraySpring中文文档

java.lang.CharacterSpring中文文档

长度为 1 的字符串Spring中文文档

char[]Spring中文文档

长度为 1 的字符串列表Spring中文文档

java.util.DateSpring中文文档

格式为 ISO 8601 日期 () 的字符串。 请注意:SDN 会将所有实例存储在 中。 如果需要时区,请使用支持时区的类型(即 )或将区域存储为单独的属性。yyyy-MM-dd’T’HH:mm:ss.SSSZZjava.util.DateUTCZoneDateTimeSpring中文文档

java.lang.FloatSpring中文文档

字符串Spring中文文档

float[]Spring中文文档

字符串列表Spring中文文档

java.lang.IntegerSpring中文文档

整数Spring中文文档

int[]Spring中文文档

整数列表Spring中文文档

java.util.LocaleSpring中文文档

格式为 BCP 47 语言标记的字符串Spring中文文档

java.lang.ShortSpring中文文档

整数Spring中文文档

short[]Spring中文文档

整数列表Spring中文文档

java.math.BigDecimalSpring中文文档

字符串Spring中文文档

java.math.BigIntegerSpring中文文档

字符串Spring中文文档

java.time.LocalDateSpring中文文档

日期Spring中文文档

Spring中文文档

java.time.OffsetTimeSpring中文文档

时间Spring中文文档

Spring中文文档

java.time.LocalTimeSpring中文文档

当地时间Spring中文文档

Spring中文文档

java.time.ZonedDateTimeSpring中文文档

日期时间Spring中文文档

Spring中文文档

java.time.LocalDateTimeSpring中文文档

本地日期时间Spring中文文档

Spring中文文档

java.time.OffsetDateTimeSpring中文文档

日期时间Spring中文文档

java.time.InstantSpring中文文档

日期时间Spring中文文档

java.util.TimeZoneSpring中文文档

字符串Spring中文文档

java.time.ZoneIdSpring中文文档

字符串Spring中文文档

java.time.PeriodSpring中文文档

期间Spring中文文档

java.time.DurationSpring中文文档

期间Spring中文文档

org.neo4j.driver.types.IsoDurationSpring中文文档

期间Spring中文文档

Spring中文文档

org.neo4j.driver.types.PointSpring中文文档

Spring中文文档

Spring中文文档

org.springframework.data.neo4j.types.GeographicPoint2dSpring中文文档

使用 CRS 4326 点Spring中文文档

org.springframework.data.neo4j.types.GeographicPoint3dSpring中文文档

使用 CRS 4979 点Spring中文文档

org.springframework.data.neo4j.types.CartesianPoint2dSpring中文文档

使用 CRS 7203 点Spring中文文档

org.springframework.data.neo4j.types.CartesianPoint3dSpring中文文档

使用 CRS 9157 点Spring中文文档

org.springframework.data.geo.PointSpring中文文档

CRS 4326 和 x/y 对应纬度/经度的点Spring中文文档

实例EnumSpring中文文档

String(枚举的名称值)Spring中文文档

实例Enum[]Spring中文文档

字符串列表(枚举的名称值)Spring中文文档

java.net.URLSpring中文文档

字符串Spring中文文档

java.net.URISpring中文文档

字符串Spring中文文档

java.util.UUIDSpring中文文档

字符串Spring中文文档

域类型 Cypher类型 直接映射到本机类型

java.lang.BooleanSpring中文文档

布尔Spring中文文档

Spring中文文档

boolean[]Spring中文文档

布尔值列表Spring中文文档

Spring中文文档

java.lang.LongSpring中文文档

整数Spring中文文档

Spring中文文档

long[]Spring中文文档

整数列表Spring中文文档

Spring中文文档

java.lang.DoubleSpring中文文档

Spring中文文档

Spring中文文档

double[]Spring中文文档

浮动列表Spring中文文档

Spring中文文档

java.lang.StringSpring中文文档

字符串Spring中文文档

Spring中文文档

java.lang.String[]Spring中文文档

字符串列表Spring中文文档

Spring中文文档

byte[]Spring中文文档

字节数组Spring中文文档

Spring中文文档

java.lang.ByteSpring中文文档

长度为 1 的 ByteArraySpring中文文档

java.lang.CharacterSpring中文文档

长度为 1 的字符串Spring中文文档

char[]Spring中文文档

长度为 1 的字符串列表Spring中文文档

java.util.DateSpring中文文档

格式为 ISO 8601 日期 () 的字符串。 请注意:SDN 会将所有实例存储在 中。 如果需要时区,请使用支持时区的类型(即 )或将区域存储为单独的属性。yyyy-MM-dd’T’HH:mm:ss.SSSZZjava.util.DateUTCZoneDateTimeSpring中文文档

java.lang.FloatSpring中文文档

字符串Spring中文文档

float[]Spring中文文档

字符串列表Spring中文文档

java.lang.IntegerSpring中文文档

整数Spring中文文档

int[]Spring中文文档

整数列表Spring中文文档

java.util.LocaleSpring中文文档

格式为 BCP 47 语言标记的字符串Spring中文文档

java.lang.ShortSpring中文文档

整数Spring中文文档

short[]Spring中文文档

整数列表Spring中文文档

java.math.BigDecimalSpring中文文档

字符串Spring中文文档

java.math.BigIntegerSpring中文文档

字符串Spring中文文档

java.time.LocalDateSpring中文文档

日期Spring中文文档

Spring中文文档

java.time.OffsetTimeSpring中文文档

时间Spring中文文档

Spring中文文档

java.time.LocalTimeSpring中文文档

当地时间Spring中文文档

Spring中文文档

java.time.ZonedDateTimeSpring中文文档

日期时间Spring中文文档

Spring中文文档

java.time.LocalDateTimeSpring中文文档

本地日期时间Spring中文文档

Spring中文文档

java.time.OffsetDateTimeSpring中文文档

日期时间Spring中文文档

java.time.InstantSpring中文文档

日期时间Spring中文文档

java.util.TimeZoneSpring中文文档

字符串Spring中文文档

java.time.ZoneIdSpring中文文档

字符串Spring中文文档

java.time.PeriodSpring中文文档

期间Spring中文文档

java.time.DurationSpring中文文档

期间Spring中文文档

org.neo4j.driver.types.IsoDurationSpring中文文档

期间Spring中文文档

Spring中文文档

org.neo4j.driver.types.PointSpring中文文档

Spring中文文档

Spring中文文档

org.springframework.data.neo4j.types.GeographicPoint2dSpring中文文档

使用 CRS 4326 点Spring中文文档

org.springframework.data.neo4j.types.GeographicPoint3dSpring中文文档

使用 CRS 4979 点Spring中文文档

org.springframework.data.neo4j.types.CartesianPoint2dSpring中文文档

使用 CRS 7203 点Spring中文文档

org.springframework.data.neo4j.types.CartesianPoint3dSpring中文文档

使用 CRS 9157 点Spring中文文档

org.springframework.data.geo.PointSpring中文文档

CRS 4326 和 x/y 对应纬度/经度的点Spring中文文档

实例EnumSpring中文文档

String(枚举的名称值)Spring中文文档

实例Enum[]Spring中文文档

字符串列表(枚举的名称值)Spring中文文档

java.net.URLSpring中文文档

字符串Spring中文文档

java.net.URISpring中文文档

字符串Spring中文文档

java.util.UUIDSpring中文文档

字符串Spring中文文档

自定义转换

对于给定类型的属性

如果您希望在实体中使用自己的类型或作为批注方法的参数,则可以定义并提供自定义转换器实现。 首先,您必须实现并注册转换器应处理的类型。 对于实体属性类型转换器,您需要注意将类型与Neo4j Java Driver相互转换。 如果转换器应该仅与存储库中的自定义查询方法一起使用,则提供对类型的单向转换就足够了。@QueryGenericConverterValueValueSpring中文文档

自定义转换器实现示例
public class MyCustomTypeConverter implements GenericConverter {

	@Override
	public Set<ConvertiblePair> getConvertibleTypes() {
		Set<ConvertiblePair> convertiblePairs = new HashSet<>();
		convertiblePairs.add(new ConvertiblePair(MyCustomType.class, Value.class));
		convertiblePairs.add(new ConvertiblePair(Value.class, MyCustomType.class));
		return convertiblePairs;
	}

	@Override
	public Object convert(Object source, TypeDescriptor sourceType, TypeDescriptor targetType) {
		if (MyCustomType.class.isAssignableFrom(sourceType.getType())) {
			// convert to Neo4j Driver Value
			return convertToNeo4jValue(source);
		} else {
			// convert to MyCustomType
			return convertToMyCustomType(source);
		}
	}

}

要使 SDN 知道您的转换器,必须在 . 为此,您必须创建一个类型为 的 。 否则,将仅使用内部默认转换器在后台创建。Neo4jConversions@Beanorg.springframework.data.neo4j.core.convert.Neo4jConversionsNeo4jConversionsSpring中文文档

自定义转换器实现示例
@Bean
public Neo4jConversions neo4jConversions() {
	Set<GenericConverter> additionalConverters = Collections.singleton(new MyCustomTypeConverter());
	return new Neo4jConversions(additionalConverters);
}

如果应用程序中需要多个转换器,则可以在构造函数中根据需要添加任意数量的转换器。Neo4jConversionsSpring中文文档

仅适用于特定属性

如果您只需要针对某些特定属性进行转化,我们提供 . 这是一个注释,可以放在实体 () 和关系属性 () 的属性上 它定义了一个 via 属性 以及构建前者的可选选项。 通过实现给定类型的所有特定转换,可以解决。 此外,还提供了在应用程序上下文中引用任何 Spring Bean 实现 。引用的 Bean 将优先于构造新的转换器。@ConvertWith@Node@RelationshipPropertiesNeo4jPersistentPropertyConverterconverterNeo4jPersistentPropertyConverterFactoryNeo4jPersistentPropertyConverter@ConvertWithconverterRefNeo4jPersistentPropertyConverterSpring中文文档

我们提供 和 作为元注释的注释,以便向后兼容不使用本机类型的 Neo4j-OGM 方案。 这些是建立在上述概念基础上的元注释注释。@DateLong@DateStringSpring中文文档

复合材料特性

对于 ,或类型的属性可以存储为复合属性。 映射中的所有条目都将作为属性添加到包含该属性的节点或关系中。 使用配置的前缀或以属性名称为前缀。 虽然我们只为开箱即用的地图提供该功能,但您可以对其进行配置 作为要使用的转换器。A 需要知道给定类型如何 分解为地图并从地图中组合回来。@CompositePropertyMap<String, Object>Map<? extends Enum, Object>Neo4jPersistentPropertyToMapConverter@CompositePropertyNeo4jPersistentPropertyToMapConverterSpring中文文档