Java Spring Data/Neo4J在级联存储上指定特定的RelationshipEntity类
我有一个对象(它是一个图形节点),它与另一个对象(它也是一个图形节点)有一个一对多的关系。当我持久化第一个对象时,我希望它持久化任何依赖对象并创建适当的关系 这是可行的,但是以这种方式创建的关系是由Spring数据自动生成的,并且它只包含类型。它不会生成我之前定义的RelationshipEntity类的实例,也无法指定我希望它使用的类。它也没有包含在Spring数据维护的LocationHasMany索引中 以下是我的类定义:Java Spring Data/Neo4J在级联存储上指定特定的RelationshipEntity类,java,neo4j,spring-data,spring-data-neo4j,Java,Neo4j,Spring Data,Spring Data Neo4j,我有一个对象(它是一个图形节点),它与另一个对象(它也是一个图形节点)有一个一对多的关系。当我持久化第一个对象时,我希望它持久化任何依赖对象并创建适当的关系 这是可行的,但是以这种方式创建的关系是由Spring数据自动生成的,并且它只包含类型。它不会生成我之前定义的RelationshipEntity类的实例,也无法指定我希望它使用的类。它也没有包含在Spring数据维护的LocationHasMany索引中 以下是我的类定义: @NodeEntity public class Location
@NodeEntity
public class LocationNode {
private String name;
@GraphId
private Long id;
@RelatedTo(type="HAS_MANY", elementClass=CategoryNode.class, enforceTargetType=true)
private Set<CategoryNode> categories = new HashSet<CategoryNode>();
}
@NodeEntity
public class CategoryNode {
private String name;
@GraphId
private Long id;
}
@RelationshipEntity(type="HAS_MANY")
public class LocationHasMany {
@GraphId
private Long nodeId;
@StartNode
private LocationNode location;
@EndNode
private CategoryNode category;
}
但我觉得这似乎给我的LocationNode对象添加了不必要的细节,它是使用某种图形层持久化的。似乎注释@RelatedTo应该能够指定在关系创建期间需要使用的特定RelationshipEntity类。此外,在此场景中,我还需要确保在持久化LocationNode之前,所有CategoryNode都已持久化。否则,关系创建将抛出错误。(仍有大量手动依赖项处理)
以前有人遇到过这个问题并解决过吗
我的最后一个解决方案是创建一个自定义存储库实现,然后在该方法中处理所有关系创建/对象持久性。(saveLocationWithDependencies(LocationNode location))但是,我不希望对具有嵌套图形节点的每个对象都这样做。这是一大堆需要维护的额外代码。我认为您在这里发现了一个问题,在级联过程中没有使用RelationshipEntityType,您能在上提出JIRA问题吗?谢谢。
@NodeEntity
public class LocationNode {
@RelatedToVia(type="HAS_MANY", elementClass=LocationHasMany.class)
private Set<LocationHasMany> categories;
}