该版本仍在开发中,尚未被视为稳定。对于最新稳定版本,请使用Spring Data Neo4j 8.0.0spring-doc.cadn.net.cn

转换

基于约定的映射

Neo4j 转换器在没有提供额外映射元数据时,有几种映射对象的约定。 这些惯例包括:spring-doc.cadn.net.cn

  • 简短的 Java 类名通过以下方式映射到主标签: 该级别com.bigbank.储蓄账户映射到储蓄账户主要厂牌。spring-doc.cadn.net.cn

  • 转换器会使用注册的任意 Spring 转换器来覆盖对象属性与节点字段和值的默认映射。spring-doc.cadn.net.cn

  • 对象的字段用于与图中的字段之间的转换。 公共JavaBean不使用属性。spring-doc.cadn.net.cn

  • 如果你有一个非零参数的构造器,其构造器参数名称与节点顶层属性名称一致,则使用该构造器。 否则,使用零参数构造子。 如果存在多个非零参数的构造函数,则会抛出异常。spring-doc.cadn.net.cn

我们支持开箱即用的各种转换方案。 在官方驱动程序手册中查找支持的密码类型列表:类型映射spring-doc.cadn.net.cn

原始类型的包装类型同样得到支持。spring-doc.cadn.net.cn

领域类型 密码类型 直接映射到本地类型

java.lang.Booleanspring-doc.cadn.net.cn

布尔spring-doc.cadn.net.cn

spring-doc.cadn.net.cn

布尔值[]spring-doc.cadn.net.cn

布尔值列表spring-doc.cadn.net.cn

spring-doc.cadn.net.cn

java.lang.Longspring-doc.cadn.net.cn

整数spring-doc.cadn.net.cn

spring-doc.cadn.net.cn

长[]spring-doc.cadn.net.cn

整数列表spring-doc.cadn.net.cn

spring-doc.cadn.net.cn

java.lang.Doublespring-doc.cadn.net.cn

spring-doc.cadn.net.cn

spring-doc.cadn.net.cn

双重[]spring-doc.cadn.net.cn

花车列表spring-doc.cadn.net.cn

spring-doc.cadn.net.cn

java.lang.字符串spring-doc.cadn.net.cn

字符串spring-doc.cadn.net.cn

spring-doc.cadn.net.cn

java.lang.String[]spring-doc.cadn.net.cn

弦列表spring-doc.cadn.net.cn

spring-doc.cadn.net.cn

字节[]spring-doc.cadn.net.cn

字节阵列spring-doc.cadn.net.cn

spring-doc.cadn.net.cn

java.lang.Bytespring-doc.cadn.net.cn

长度为1的字节数组spring-doc.cadn.net.cn

java.lang.Characterspring-doc.cadn.net.cn

长度为1的弦spring-doc.cadn.net.cn

角色[]spring-doc.cadn.net.cn

长度为1的弦列表spring-doc.cadn.net.cn

java.util.Datespring-doc.cadn.net.cn

字符串格式化为 ISO 8601 日期(yyyy-mm-dd'T'HH:mm:ss。SSSZ). 注意Z: SDN 将存储所有内容java.util.Date实例世界协调时间. 如果你需要时区,使用支持时区的类型(例如:区域日期时间)或将该区域作为独立财产存储。spring-doc.cadn.net.cn

java.lang.floatspring-doc.cadn.net.cn

字符串spring-doc.cadn.net.cn

float[]spring-doc.cadn.net.cn

弦列表spring-doc.cadn.net.cn

java.lang.整数spring-doc.cadn.net.cn

整数spring-doc.cadn.net.cn

int[]spring-doc.cadn.net.cn

整数列表spring-doc.cadn.net.cn

java.util.Localespring-doc.cadn.net.cn

字符串格式化为BCP 47语言标签spring-doc.cadn.net.cn

java.lang.Short(简洁)spring-doc.cadn.net.cn

整数spring-doc.cadn.net.cn

短短[]spring-doc.cadn.net.cn

整数列表spring-doc.cadn.net.cn

java.math.BigDecimalspring-doc.cadn.net.cn

字符串spring-doc.cadn.net.cn

java.math.BigIntegerspring-doc.cadn.net.cn

字符串spring-doc.cadn.net.cn

java.time.LocalDatespring-doc.cadn.net.cn

日期spring-doc.cadn.net.cn

spring-doc.cadn.net.cn

java.time.OffsetTimespring-doc.cadn.net.cn

时间spring-doc.cadn.net.cn

spring-doc.cadn.net.cn

java.time.LocalTimespring-doc.cadn.net.cn

本地时间spring-doc.cadn.net.cn

spring-doc.cadn.net.cn

java.time.ZonedDateTimespring-doc.cadn.net.cn

约会时间spring-doc.cadn.net.cn

spring-doc.cadn.net.cn

java.time.localDateTimespring-doc.cadn.net.cn

本地日期时间spring-doc.cadn.net.cn

spring-doc.cadn.net.cn

java.time.OffsetDateTimespring-doc.cadn.net.cn

约会时间spring-doc.cadn.net.cn

java.time.Instantspring-doc.cadn.net.cn

约会时间spring-doc.cadn.net.cn

java.util.TimeZonespring-doc.cadn.net.cn

字符串spring-doc.cadn.net.cn

java.time.ZoneIdspring-doc.cadn.net.cn

字符串spring-doc.cadn.net.cn

java.time.periodspring-doc.cadn.net.cn

期间spring-doc.cadn.net.cn

java.time.Durationspring-doc.cadn.net.cn

期间spring-doc.cadn.net.cn

org.neo4j.driver.types.IsoDurationspring-doc.cadn.net.cn

期间spring-doc.cadn.net.cn

spring-doc.cadn.net.cn

org.neo4j.driver.types.Pointspring-doc.cadn.net.cn

spring-doc.cadn.net.cn

spring-doc.cadn.net.cn

org.springframework.data.neo4j.types.GeographicPoint2dspring-doc.cadn.net.cn

与CRS 4326号点的联系spring-doc.cadn.net.cn

org.springframework.data.neo4j.types.GeographicPoint3dspring-doc.cadn.net.cn

与CRS 4979号点spring-doc.cadn.net.cn

org.springframework.data.neo4j.types.CartesianPoint2dspring-doc.cadn.net.cn

与CRS 7203号点spring-doc.cadn.net.cn

org.springframework.data.neo4j.types.CartesianPoint3dspring-doc.cadn.net.cn

CRS 9157点spring-doc.cadn.net.cn

org.springframework.data.geo.Pointspring-doc.cadn.net.cn

CRS 4326的点和x/y对应经纬度spring-doc.cadn.net.cn

实例枚举spring-doc.cadn.net.cn

字符串(枚举的名称值)spring-doc.cadn.net.cn

实例枚举[]spring-doc.cadn.net.cn

字符串列表(枚举的名称值)spring-doc.cadn.net.cn

java.net.URLspring-doc.cadn.net.cn

字符串spring-doc.cadn.net.cn

java.net.URIspring-doc.cadn.net.cn

字符串spring-doc.cadn.net.cn

java.util.UUIDspring-doc.cadn.net.cn

字符串spring-doc.cadn.net.cn

自定义转换

对于给定类型的属性

如果你更喜欢在实体中使用自己的类型,或者作为参数来作@Query注释方法,你可以定义并提供自定义转换器实现。 首先你必须实现一个通用转换器并登记转换器应处理的类型。 对于实体属性类型转换器,你需要确保将类型转换到从Neo4j Java驱动之间转换. 如果你的转换器只应在仓库中使用自定义查询方法,只需提供单向转换即可类型。spring-doc.cadn.net.cn

自定义转换器实现示例
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知道你的转换器,必须在Neo4j转换. 为此,你必须创建一个@Bean其中类型为org.springframework.data.neo4j.core.convert.Neo4jConversions. 否则,Neo4j转换它只会在后台用内置默认转换器创建。spring-doc.cadn.net.cn

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

如果你的应用需要多个转换器,可以在Neo4j转换构造 函数。spring-doc.cadn.net.cn

仅限特定属性

如果您只需要针对某些特定属性进行转换,我们提供@ConvertWith. 这是一个可以加在两个实体属性上的注释(@Node)和关系性质(@RelationshipProperties) 它定义了Neo4jPersistentPropertyConverter通过转炉属性 以及一个可选Neo4jPersistentPropertyConverterFactory构建前者。 实现为Neo4jPersistentPropertyConverter所有特定类型的转换都可以被处理。 另外@ConvertWith还提供转换器 参考用于在应用上下文中引用任何 Spring Bean 实现Neo4jPersistentPropertyConverter.上述豆子将比新建转换器更受青睐。spring-doc.cadn.net.cn

我们提供@DateLong@DateString作为元注释注释,用于向后兼容不使用原生类型的 Neo4j-OGM 方案。 这些是基于上述概念构建的元注释注释。spring-doc.cadn.net.cn

复合材料性质

@CompositeProperty,属性为类型Map<String,对象>地图<?扩展枚举,宾语>可以作为复合属性存储。 映射中的所有条目都会作为属性添加到包含该属性的节点或关系中。 要么带有配置的前缀,要么带有物业名称的前缀。 虽然我们只为现成的地图提供此功能,但你可以Neo4jPersistentPropertyToMapConverter并配置它 作为用于 的转换器@CompositeProperty.一个Neo4jPersistentPropertyToMapConverter需要知道某一类型如何 可以分解成地图,并从地图中合成回来。spring-doc.cadn.net.cn