Java Spring数据Neo4j中的DynamicRelationshipType或在运行时定义关系类型

Java Spring数据Neo4j中的DynamicRelationshipType或在运行时定义关系类型,java,neo4j,spring-data-neo4j,Java,Neo4j,Spring Data Neo4j,我可以在运行时指定关系类型吗 我正在实体中创建一组relationshipEntity对象,使用 @Fetch @RelatedToVia(type="RELATED_IN_SOME_WAY", direction = Direction.BOTH) Set<ThingRelationship> relationships = new HashSet<ThingRelationship>(); 但是,我不想在编译时指定关系类型(type=“RELATED\u IN\u

我可以在运行时指定关系类型吗

我正在实体中创建一组relationshipEntity对象,使用

@Fetch
@RelatedToVia(type="RELATED_IN_SOME_WAY", direction = Direction.BOTH)
Set<ThingRelationship> relationships = new HashSet<ThingRelationship>();
但是,我不想在编译时指定关系类型(type=“RELATED\u IN\u SOME\u WAY”),而是在运行时指定。当我以某种方式删除type=“RELATED”时,会出现一个错误,即必须定义默认类型

在Neo4j中,我认为这种运行时关系类型需要使用DynamicRelationshipType,但是我认为Spring数据Neo4j不支持这种概念

我说的对吗?如果是的话,这个问题还有其他原因吗?我是否需要转储Spring数据Neo4j,转而使用核心API?

  • 在Neo4j中,我认为这种运行时关系类型需要使用DynamicRelationshipType,但是我认为Spring数据Neo4j不支持这种概念

因为动态类型信息是动态的,所以它通常是动态的 无法使用SDN向后读取映射。关系 仍然存在,但SDN无法帮助您访问它,因为它不存在 知道你给的是什么类型的。同样,出于这个原因,我们要求你 指定默认关系类型,以便我们至少可以尝试 反向映射

因此,尽管动态关系仍在创建中,但它不能使用该信息从Neo4j db检索回节点/关系。需要默认关系,以便SDN至少可以返回已知关系

  • 我说的对吗?如果是的话,这个问题还有其他解决方法吗?我是否需要转储Spring数据Neo4j,转而使用CoreAPI
您可以使用SDN使用
@RelationshipType
创建所有需要的动态关系,但无法使用默认API将其检索回来。您可以使用编写自己的密码或编写遍历代码,并使用
@Query
将其附加到存储库或节点属性

@RelationshipEntity
public class ThingRelationship {

public ThingRelationship() {
    super();
}

//incremental neo4j set ID
@GraphId Long nodeId;

//Start and end nodes
@StartNode Thing startThing;
@EndNode Thing endThing;

//Relationship Type
@org.springframework.data.neo4j.annotation.RelationshipType
String relationship;